答案:通过配置SSH的ProxyJump或ProxyCommand,可在VS Code中经跳板机连接内网服务器。具体步骤包括设置~/.ssh/config文件,定义跳板机与目标主机,使用ProxyJump简化多级跳转,或用ProxyCommand兼容旧版本,链式配置支持三级以上跳转,确保密钥正确、防火墙放行,最终实现流畅远程开发。

在实际开发中,很多服务器出于安全考虑部署在内网环境,无法直接通过公网访问。这时通常需要通过一台具有公网IP的跳板机(Bastion Host)进行中转连接目标服务器。使用 VS Code 的 Remote-SSH 插件配合 SSH 配置,可以轻松实现多级跳转连接内网服务器,获得本地般的开发体验。
基本原理
VS Code 的 Remote-SSH 功能依赖于本地的 SSH 客户端。只要你的本地 SSH 配置能成功连接目标主机,Remote-SSH 就能工作。因此,关键在于正确配置 ~/.ssh/config 文件,利用 SSH 的 ProxyJump 或 ProxyCommand 实现跳板连接。
使用 ProxyJump 简化多级连接
OpenSSH 7.3+ 引入了 ProxyJump 指令,让多级跳转变得非常简洁。假设:
- 跳板机:bastion.example.com(公网)
- 目标机:192.168.1.100(内网,仅跳板机可访问)
在 ~/.ssh/config 中添加:
Host bastionHostName bastion.example.com
User your-bastion-user
IdentityFile ~/.ssh/id_rsa_bastion
Host target-server
HostName 192.168.1.100
User your-target-user
IdentityFile ~/.ssh/id_rsa_target
ProxyJump bastion
保存后,在 VS Code Remote-SSH 面板中选择 “target-server”,它会自动先连接到 bastion,再跳转至目标机。
使用 ProxyCommand 兼容旧版本
如果你的 OpenSSH 版本较老,不支持 ProxyJump,可以用 ProxyCommand 替代。上面的例子等价写法为:
Host target-serverHostName 192.168.1.100
User your-target-user
IdentityFile ~/.ssh/id_rsa_target
ProxyCommand ssh -q -W %h:%p bastion
其中 -W %h:%p 表示将本地与目标机的通信转发给跳板机处理,-q 启用静默模式减少输出。
多跳场景(三级及以上)
如果需要经过多个跳板(如公网 → 内网A → 内网B),可链式使用 ProxyJump:
Host jump1HostName jump1.example.com
User user1
Host jump2
HostName 10.0.1.5
User user2
ProxyJump jump1
Host final-target
HostName 10.0.2.10
User dev
ProxyJump jump2
连接 final-target 时,SSH 会依次经过 jump1 → jump2 → final-target,VS Code 无需额外操作。
常见问题与建议
确保每台机器的 SSH 密钥已正确配置,推荐使用 ssh-agent 管理私钥,避免频繁输入密码。测试连接时,先在终端运行 ssh target-server 确认能手动登录,再在 VS Code 中尝试。
若遇到连接超时或卡在 “Resolving…”,检查跳板机是否允许 TCP 转发(需 PermitTunnel 和 GatewayPorts 开启),并确认中间节点防火墙放行对应端口。
基本上就这些,合理配置 SSH config 后,VS Code 远程开发就像连接本地服务器一样顺畅。










