我想知道是否有人可以帮助我为服务器进行多隧道跳跃......
基本上我的设置看起来像这样......
[desktop01]=====[server01]=====[server02]---------[machine01]
\--------[machine02]
\-------[machine03]
\------[machine04]
我想设置一些 ssh 隧道,以便我可以从我的桌面直接 ssh 到 machine01 到 04,而不必依次 ssh 到其间的每个盒子...
因此,desktop01 只能看到 server01,server02 只能接受来自 server01 的连接,而机器 01 到 04 只能接受来自 server02 的连接。
有人可以帮忙吗?因为我真的很困惑。
先感谢您 :)
答案1
以下配置~/.ssh/config
允许您通过使用符号分隔来动态设置跳转主机%
:
Host *%*
ProxyCommand ssh $(echo %h | cut -d%% -f2-) nc $(echo %h | cut -d%% -f1) %p
然后您可以运行ssh machine01%server02%server01
,它将通过 server01 和 server02 连接到 machine01。(不幸的是,当您需要指定非默认用户名时,这种方法不太好用。)
答案2
好吧,你可以使用端口转发来构建类似以下内容的内容:
(语法: lport:remotehost:rport
,意思是“将本地机器上的端口 lport 转发到远程机器上的端口 rport)
[server01] [server02]
22001:server02:22001 22001:machine01:22
22002:server02:22002 22002:machine02:22
22003:server02:22003 22003:machine03:22
22004:server02:22004 22004:machine04:22
然后您只需使用相关用户名即可ssh -p 22001 usernamefrom_machine01@server01
进行连接。machine01
要构建端口转发,请使用-L
ssh 选项或在文件的帮助下进行配置~/.ssh/config
。
有关详细信息,请参阅man ssh
和man ssh_config
。
答案3
superuser.com 上对此问题的回答有多种方式 https://superuser.com/questions/96489/ssh-tunnel-via-multiple-hops