内网IP无法直连VSCode Remote-SSH因网络层不通,需用跳板机(ProxyJump)或反向隧道(ssh -R)中转;配置须严格控制SSH密钥权限与authorized_keys完整性。
为什么直接填内网IP连不上
VSCode 的
扩展默认走标准 SSH 协议,要求客户端能直连目标服务器的 SSH 端口(通常是 22)。如果测试服务器在纯内网、没有公网 IP、也没做端口映射或 NAT 转发,那 VSCode 就根本发不出 TCP 连接请求——不是配置错,是网络层就通不过。
必须用中转机器做跳板(Jump Host)
最稳且无需额外服务端软件的方式,是找一台有公网 IP 的 Linux 机器(比如云服务器、家里树莓派、公司跳板机)作为中转。你的本地 VSCode 先连它,再由它连内网服务器。关键靠 SSH 的
或
实现。
实操步骤:
确保中转机(
)能 SSH 登录内网服务器(比如
),即:在中转机上执行
要能成功
在本地
中添加两段配置:
保存后,在 VSCode 的 Remote-SSH 连接面板里选
,它会自动走跳转链路。不需要改 VSCode 设置,也不需要手动开两个终端。
如果中转机不能直接访问内网服务器怎么办
常见于中转机和内网服务器不在同一局域网,或中转机本身也受限(比如只开放了 Web 端口)。这时得换方案:在内网服务器上主动反向建立隧道到中转机。
在内网服务器上执行:
VSCode 1.118
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
下载
这会让中转机的
端口转发到内网服务器的 22 端口。然后在本地 VSCode 的 SSH 配置里写:
注意:
是连中转机的端口,
是内网服务器上的用户名(因为隧道把登录认证透传过去了)。这个连接依赖隧道常驻,建议用
或 systemd service 管理反向隧道进程。
别踩这些坑
对密钥权限很敏感,尤其是跳转场景下容易因权限问题静默失败:
文件权限必须是
(
),否则 SSH 客户端会忽略它
跳转链路上每台机器的
都要包含你本地的公钥;缺任何一环都会卡在 password 提示或直接报
如果内网服务器禁用了密码登录(
),但你的密钥没配对成功,VSCode 就会反复弹窗又失败,看不出具体哪步断了——建议先在终端手动跑一遍
看真实错误
反向隧道方式最大的隐性成本是:一旦中转机重启或网络抖动,隧道就断,VSCode 连接会直接掉,且不会自动重连。这点比正向跳板更难监控。
Remote-SSHProxyJumpProxyCommandjump.example.com192.168.10.5ssh user@192.168.10.5~/.ssh/config
Host jump
HostName jump.example.com
User your_user_on_jump
Host test-server
HostName 192.168.10.5
User your_user_on_internal
ProxyJump jump
test-server
ssh -R 2222:localhost:22 user@jump.example.com
2222
Host test-via-reverse
HostName jump.example.com
Port 2222
User your_user_on_internal
Port 2222UserautosshRemote-SSH~/.ssh/config600chmod 600 ~/.ssh/config~/.ssh/authorized_keysPermission denied (publickey)PasswordAuthentication nossh test-server