跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

VSCode怎么通过SSH连接到没有公网IP的内网Linux测试服务器(内网穿透)

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

相关文章