如何通过中转SSH服务器一步连接受静态IP限制的目标SSH服务器?
这问题我太熟了!你要的就是一步通过跳板机直接SSH到Server2,不用先连Server1再二次跳转,给你两种实用方法,都是SSH原生功能,不用装额外工具:
方法1:命令行直接用
ProxyJump(推荐,SSH 7.3及以上版本支持) 直接在本地终端敲这条命令,就能一步到位连到Server2:
ssh -J 你的Server1用户名@Server1地址 你的Server2用户名@Server2地址
举个实际例子:如果Server1的用户是john,地址是1.2.3.4;Server2的用户是jane,地址是192.168.1.10,那命令就是:
ssh -J john@1.2.3.4 jane@192.168.1.10
-J参数的作用就是告诉SSH:先连到Server1,再通过它的网络直接对接Server2,全程在本地终端完成——你看不到Server1的Shell,直接进入Server2的会话。
方法2:配置SSH配置文件(长期使用更省心)
如果你经常要连Server2,不想每次敲长命令,就编辑本地的~/.ssh/config文件(Windows用户路径是C:\Users\你的用户名\.ssh\config),添加以下内容:
# 先定义Server1的基础信息 Host server1 HostName 1.2.3.4 # 替换成Server1的实际IP/域名 User john # 替换成你的Server1用户名 # 要是用SSH密钥登录,加上下面这行(密码登录就删掉) IdentityFile ~/.ssh/id_rsa # 定义Server2,指定通过server1跳转 Host server2 HostName 192.168.1.10 # 替换成Server2的实际IP/域名 User jane # 替换成你的Server2用户名 ProxyJump server1 # 密钥登录的话同样可以加IdentityFile(可选) IdentityFile ~/.ssh/id_rsa
配置保存后,以后只要在终端敲:
ssh server2
直接就一步连到Server2了,连地址和用户名都不用输,超省心!
兼容旧版本SSH(低于7.3)
如果你的SSH版本比较老,不支持ProxyJump,那就用ProxyCommand代替:
命令行直接敲:
ssh -o ProxyCommand="ssh -W %h:%p john@1.2.3.4" jane@192.168.1.10
或者在~/.ssh/config里把ProxyJump server1换成:
ProxyCommand ssh server1 -W %h:%p
额外小技巧:免密登录更丝滑
要是不想每次连都输密码,可以把本地的SSH公钥(~/.ssh/id_rsa.pub)传到Server1,再从Server1把公钥传到Server2,这样以后连的时候全程自动跳转,完全不用输密码,一步到位更顺畅。
内容的提问来源于stack exchange,提问作者gabtzi
相关产品推荐
相关产品推荐

