You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code Remote-SSH中ssh -T -D与-T -L的差异及使用场景

VS Code Remote-SSH:-D与-L参数的差异及使用场景

核心差异

  • -D(动态SOCKS代理隧道)
    建立一个SOCKS5代理,本地发往指定端口的所有流量都会通过SSH连接转发到远程主机,由远程主机处理后续网络请求。这种模式是全局转发,适合覆盖所有需要和远程主机交互的流量。
    你的成功连接命令ssh -T -D 58304 "remote.host.name" bash就是典型用法:本地58304端口作为SOCKS代理入口,VS Code通过这个隧道和远程主机上的VS Code Server通信。

  • -L(本地端口转发)
    是定向转发,仅将本地指定端口的流量,通过SSH隧道转发到远程主机上的特定目标(这里是Unix域套接字/path/on/remote/code-0ae38beb-47d3-4a9e-9ffc-abe760af43b4)。它只针对指定目标生效,不会处理其他流量。

VS Code Remote-SSH的使用时机

  • 触发-D的场景:

    • 直接连接远程物理机/VM的常规远程开发场景,这是默认的隧道模式。
    • 需要借助远程主机作为代理访问外部网络资源时,动态代理可以覆盖所有转发需求。
  • 触发-L的场景:

    • 连接远程主机上的容器、WSL子系统内的VS Code Server时,这些环境的Server通常绑定在Unix域套接字上,需要通过-L把本地端口映射到这个Socket。
    • 仅需定向访问远程主机上的特定服务(比如内部数据库、私有API)时,用-L做精准转发。

针对报错的排查建议

同事遇到的Error establishing tunnel (Max wait time exhausted),结合-L参数的特性,可从以下几点排查:

  • 检查远程主机上的目标套接字/path/on/remote/code-0ae38beb-47d3-4a9e-9ffc-abe760af43b4是否存在,同事的SSH用户是否有读取权限。
  • 查看远程SSH服务器的配置(sshd_config),是否禁用了本地端口转发(AllowTcpForwarding是否为yes)。
  • 确认本地端口53514是否被其他进程占用,导致无法绑定转发。

内容的提问来源于stack exchange,提问作者blaylockbk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:12:39