YASS另一个简单的解决方案
ssh -f -L 2222:HostC_IP_or_Name:22 userOnB@hostB sleep 10 &&
ssh -o HostKeyAlias=HostC -p 2222 userOnC@localhost
- 第一条命令打开与HostB的ssh连接,并告诉HostB将连接从localhost:2222转发到HostC:22。
-f建立连接后,该参数告诉SSH进入后台
- 第二个命令只是打开一个到localhost:2222的客户端连接
- 不需要选件HostKeyAlias,但可以帮助防止连接到错误的主机
- 注意:
sleep 10在第二个ssh命令使用转发的端口之前,需要使用该命令来保持连接。然后,当第二条SSH离开转发端口时,第一条SSH将关闭。
您现在可以运行后续的ssh会话:
ssh -o HostKeyAlias=HostC -p 2222 userOnC@localhost
变体:
ssh -f -L 2222:HostC_IP_or_Name:22 userOnB@hostB sleep 10 &&
ssh -M -S ~/.ssh/ssh_HostC22userOnC.sock -o HostKeyAlias=HostC -p 2222 userOnC@localhost
随后的ssh会话可以通过运行来打开:
ssh -S ~/.ssh/ssh_HostC22userOnC.sock userOnC@localhost
使用-M和-S参数的主要优点是,从HostA到HostC仅打开一个连接,后续会话将不再进行身份验证,并且运行速度更快。