多跳隧道指南

多跳隧道指南

我想知道是否有人可以帮助我为服务器进行多隧道跳跃......

基本上我的设置看起来像这样......

[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

要构建端口转发,请使用-Lssh 选项或在文件的帮助下进行配置~/.ssh/config

有关详细信息,请参阅man sshman ssh_config

答案3

superuser.com 上对此问题的回答有多种方式 https://superuser.com/questions/96489/ssh-tunnel-via-multiple-hops

相关内容