SSH 通过跳板机登陆服务器
动机
接上篇解决台式机Ubuntu VPN访问公网资源的问题后,我尝试了配置跳板机访问杭研院机器。
在科研工作中,MAC笔记本无法连接OpenVPN,从而访问杭研院机器。我的台式机Ubuntu已经配置好了VPN,可以访问服务器。我现在想通过台式机Ubuntu中转,从而实现MAC“直接”访问杭研院。抽象一下问题为:
- A可以访问B
- A不可以访问C
- B可以访问C
- 我现在想A访问C
由于工作中主要使用SSH,因此,问题简化成A通过SSH直接登陆C。
我经过不屑的网上搜索和尝试,总结了2中技术和方法实现我的目的。
- SSH 代理
- SSH 隧道
SSH 代理
这种方法最简单,不需要在B上进行任何操作,无缝连接C。
A上执行,其中rentao@10.134.150.154
是B,ldmc@192.168.131.181
是C。
1 | ssh -o "ProxyJump rentao@10.134.150.154" ldmc@192.168.131.181 |
Reference: 穿越跳板机
SSH 隧道
B上执行:
1 | ssh -f -N -L 0.0.0.0:9906:192.168.131.181:22 ldmc@192.168.131.181 |
A上执行:
1 | ssh -p 9906 ldmc@10.134.150.154 |
虽然这种方法看起来更麻烦些,需要A B协作。但是相比第一种方法,其实更加灵活。可以通过SSH 隧道的方式通过B中转暴露更多C的服务(如观察训练数据的tensorboard HTTP服务也是我常需要暴露的),并不一定是SSH登陆。
Reference: SSH 端口转发:SSH 隧道