![客户端和两台服务器之间的 SSH 转发](https://linux22.com/image/203722/%E5%AE%A2%E6%88%B7%E7%AB%AF%E5%92%8C%E4%B8%A4%E5%8F%B0%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B9%8B%E9%97%B4%E7%9A%84%20SSH%20%E8%BD%AC%E5%8F%91.png)
我试图弄清楚如何在客户端和两台服务器之间建立 shh 隧道。我需要客户端通过 ServerA 连接到 ServerB。
这些是事实:
- 客户端可以连接到 ServerA(通过公共 IP)。
- 客户端无法连接到 ServerB。
- ServerA 无法连接到 ServerB。 (服务器与 ServerA 远程隔离且位于 NAT 后面)。
- ServerB 可以连接到 ServerA(通过公共 IP)。
- ServerA 和 ServerB 都无法连接到主机。 (客户端没有公共IP)。
准确设置它的 ssh 命令是什么?
答案1
您可以将客户端连接到服务器 A,将服务器 B 连接到服务器 A,并通过服务器 A 建立隧道。
在客户端:
ssh -L 2200:127.0.0.1:2200 user@serverA
在服务器B上:
ssh -R 2200:127.0.0.1:22 user@serverA
然后,要从客户端通过 SSH 连接到服务器 B,您只需运行(从客户端):
ssh -P 2200 user@serverB
答案2
我就是这样想出来的。
在客户端:
ssh -A user@ServerB
在服务器B上
ssh -N -R 44444:localhost:22 user@ServerA -p 2222
-p 2222
在我的例子中,SSH 服务器没有监听默认端口22
在客户端:
ssh user@localhost -p 44444