在涉及到多台 Linux 服务器部署时,只提供了 1 台 A 服务器的 SSH 连接,B 服务器无法直接 SSH 连接,但是可以在 A 服务器进行 SSH 连接。如果想把文件上传到 B 上,只能先上传 A 上,然后通过 scp 等命令,将文件上传到 B 上。这样有点麻烦,如果能直接通过 Xshell 等工具直接 SSH 连接 B 服务器,就能直接上传
这里提供一个方案:在 Xshell 和 MobaXterm 配置跳板
环境搭建
起两个 Linux 服务器。本文 VMware Workstation 17 Pro 起两个 openEuler 24.03 虚拟机,A 服务器为 192.168.80.100:22,B 服务器为 192.168.80.200:22,如下

配置流程
- 上图展示两个虚拟机都可以通过
SSH直连。下面我们配置通过A服务器当作跳板SSH连接B服务器 - 在
Xshell新建会话,会话名称随意。如下

- 左侧菜单中找到
代理,点击浏览,如下


- 点击
添加,名称随意,类型选择JUMPHOST,主机名输入A服务器的IP,端口是A服务器SSH的端口,再输入A服务器的SSH连接用户名/密码,点击确定,然后点击关闭,代理服务器选择刚才新建的代理,最终点击确定,如下



- 打开刚才新建的会话,发现跳板配置已生效,但是无法连接,如下

- 这是因为默认
A服务器未开启TCP 端口转发功能,修改/etc/ssh/sshd_config如下

sudo vi /etc/ssh/sshd_config,移除注释,删除#号

- 保存,重启
A服务器SSH服务。涉及到SSH配置,别乱改,就怕不小心改错了某些配置,重启SSH服务后,导致SSH无法连接。如果没有后台可以进入,就麻烦了。执行命令:sudo systemctl restart sshd,如下

- 重新通过
A服务器跳板机SSH连接B服务器,已经可以连接了,可以看到跳板信息,如下

- 总结:大致原理就是
A服务器可以直接SSH连接,同时A服务器也能够SSH连接B服务器,再开启A服务器的TCP端口转发,SSH底层采用TCP协议。当我们配置B服务器SSH连接的时候,无法直连,但是经过A服务器的代理转发,流量先打到A服务器,A服务器再把流量转发到B服务器,即实现了A服务器的跳板功能
再来看一下 MobaXterm 跳板配置流程
MobaXterm 是另外一种常用的 SSH 工具。也有其他很多功能,提供解压版下载感兴趣的可以尝试一下
- 新建会话,选择
SSH,输入主机(IP),指定用户名,输入端口(默认 22),选择Network settings,如下

- 点击
SSH gateway (jump host),然后填写 A 服务器的主机、用户名、端口,如下


- 点击
OK,OK,会先提示:你好像第一次连接这个服务器…,点击Accept即可,接着提示输入A服务器密码,再点击OK,然后会提示你要不要存储 A 服务器密码(选不选都行)。如果你选择是,还要再输入一个密码用来保护你保存的密码,它方便你以后可以直接打开会话,不需要每次都输入密码,我选了否,如下



- 配置好
A服务器密码之后,又会提示:你好像第一次连接这个服务器…,这次说的是第一次连接B服务器,继续点击Accept,然后要求输入B服务器的密码,同样,也会提示你是否保存密码(和A服务器刚才提示都一样),我也选了否,最终直接SSH连接成功,如下



- 如果遇到无法连接,排查下是不是
IP、端口、用户名、密码等配置错误。还有就是你是不是配置反了,先配置了A服务器,然后在代理的地方配置成了B服务器。再不行,就多对比教程查看哪里有问题,然后再点击会话重新连接试试

2168

被折叠的 条评论
为什么被折叠?



