课题组里的服务器没有连接外网,需要使用学院服务器的管理节点作为跳板机,本文主要介绍如何配置 SSH 的 config 文件来实现不同局域网下机器的直连。
出于安全考虑,组里的服务器没有直接接通外网,而是通过网线连接在机房的交换机上。在正常情况下,我们必须先通过 SSH 登录学院服务器的管理节点,然后再次 SSH 嵌套登录才能连上组里的服务器。但是这样子用起来就很麻烦,并且导致 VS Code 的 Remote-SSH 插件也不能正常使用。
各机器之间的关系
我们首先要搞清楚各机器之间的关系:
-
本机:即当前我们手上所使用的机器。
-
跳板机:即学院服务器的管理节点 (IP: 10.30.13.121) ,它与校园网 (或者外网挂上学校 VPN) 接通。
-
工作机器:即组里的 3 台服务器 (IP: 192.168.1.22、192.168.1.33 和 192.168.1.44),在机房通过网线连接学院服务器管理节点的交换机。
10.30.13.121)) C-->|内网|D(192.168.1.22) C-->|内网|E(192.168.1.33) C-->|内网|F(192.168.1.44)
下面我们将介绍如何实现本机 SSH 直连工作机器。
建立与跳板机的互信 (optional)
这一步有的机器可能并不需要,但是我们还是提一下。首先建立本机与跳板机 (IP: 10.30.13.121) 的互信:
ssh-copy-id -p 22 wwang@10.30.13.121
通过 ProxyCommand 实现 SSH 直连
修改本机根目录 (~) 下 .ssh 文件夹里的 config 文件 (不了解的可以先看看 SSH 使用设置):
ServerAliveInterval 60
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
Host tongjiphy
HostName 10.30.13.121
User wwang
Host tesla
HostName 192.168.1.33
User wwang
ProxyCommand ssh -q -W %h:%p tongjiphy
Host geforce1
HostName 192.168.1.22
User wwang
ProxyCommand ssh -q -W %h:%p tongjiphy
Host geforce2
HostName 192.168.1.44
User wwang
ProxyCommand ssh -q -W %h:%p tongjiphy
这是我的 config 文件,可以看到:我以学院管理节点 (Host Alias: tongjiphy, IP: 10.30.13.121) 作为跳板机,利用 ProxyCommand
(跳板机代理执行的命令) 来实现不同局域网下机器的 SSH 直连。
注: 在 Windows 下使用 ProxyCommand
后面必须加上 ssh
的完整路径,即:
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -q -W %h:%p tongjiphy
结语
完成上述配置后就可以使用 ssh tesla
、 ssh geforce1
或者 ssh geforce2
直连内网中的 3 台工作机器了,同样也可以正常使用 VS Code 的 Remote-SSH 插件远程编写、调试和运行程序了!🎉 🎉 🎉

