TOC
风险提示!!! 生产环境谨慎操作!!!
跳板机(堡垒机)是生产环境中的安全网关,所有对内网服务器的访问都必须通过跳板机中转。传统方式需要先SSH到跳板机,再从跳板机SSH到目标服务器,操作繁琐且无法使用VSCode的远程开发功能。本文介绍一种通过VSCode Remote-SSH插件连接后端服务器的配置方法。
安装插件
在Extensions(插件)
面板中搜索Remote - SSH,安装。
该插件允许VSCode通过SSH连接到远程服务器,在远程环境中直接编辑代码、运行程序和调试,就像在本地开发一样。
插件安装后,
- 左下角点击
Open a Remote Window
- 选择
Connect to Host...
->Configure SSH Hosts
,选择一个Remote-SSH配置文件开始配置
第一步:连上跳板机
首先确保能够正常连接到跳板机,这是整个方案的基础。如果无法连接跳板机,后续的代理转发就无法实现。
配置跳板机连接信息:
Host JumpServer # RemoteSSH资产名称, 随便取
HostName jumpserver.com # 跳板机地址
User jumpUser # 跳板机用户
Port 31100 # 跳板机端口
建议先测试这个配置,确保能通过VSCode Remote-SSH成功连接到跳板机。任何能够SSH访问且有权限连接目标服务器的机器都可以充当跳板机角色。
第二步:通过跳板机连上后端服务器
根据实际情况配置:
Host JumpServer # RemoteSSH资产名称, 随便取
HostName jumpserver.com # 跳板机地址
User jumpUser # 跳板机用户
Port 31100 # 跳板机端口
Host myServer # RemoteSSH资产名称, 随便取
HostName 10.1.1.1 # 后端服务器地址
Port 31100 # 后端服务器端口
User myUser # 后端服务器用户
ProxyCommand ssh -W %h:%p JumpServer # {JumpServer}需与上面的配置一致
配置保存后重新点击Open a Remote Window
选择Connect To Host...
选择开发机(myServer)输入密码即可。
工作原理
注意到这里ProxyCommand ssh -W %h:%p JumpServer
是核心配置:
- VSCode尝试连接myServer
- SSH客户端执行ProxyCommand,先连接到JumpServer
- 在跳板机上建立到目标服务器的隧道(
ssh -W 10.1.1.1:31100
) - 所有SSH流量通过跳板机转发到目标服务器
实现效果:VSCode → JumpServer → myServer
,VSCode感觉像直接连接目标服务器。
除了VSCODE连上生产环境之外(一般也不这样做,没有谁会在生产环境的机器上开发吧),还有一个非常实用的场景,就是VSCODE到一个开发服务器上,通过devcontainer在目标机器上进行开发 – 即不占用本地机器的资源,又保证了开发环境的一致(任何地方都可以SSH回同一台机器进行开发),还能够快速搭建开发环境(基于docker)。