两台机器之间的 SSH 隧道只能 ssh 到第三台机器,但不能直接相互连接

两台机器之间的 SSH 隧道只能 ssh 到第三台机器,但不能直接相互连接

我的设置中有 3 台机器:

M1     M2     M3
  • 我需要在 M1 上打开控制 M3 的 SSH shell。
  • M1 和 M3 位于不同的防火墙后面,无法直接到达对方。
  • M1 和 M3到达(并通过 ssh 连接)到 M2。但反之则不然 - M2 无法到达 M1 或 M3。

我可以使用M2创建从M1到M3的隧道吗?

M1 --> M2 <-- M3
 \____________^

答案1

从M3

ssh -R localhost:2602:localhost:22 user@M2

从M1

ssh -L localhost:2602:localhost:2602 user@M2

现在你可以从M1直接连接到M3(这里localhost实际上是指M3)

ssh user@localhost -p 2602

答案2

我用-J(我记得它是“Jump”)来做到这一点。

M1 -> M3(通过 M2):

ssh -J M2 M3 

scp也支持类似的东西:

scp --ProxyJump=M2 localfile M3:remotefile

我认为用 IP 来解释是最简单的:

M1 = 192.168.1.100
M2 = 192.168.1.101 & 10.10.1.200
M3 = 10.10.1.201

M1 无法访问10.10.1.x,因此必须通过 M2 访问两个网络。假设每台计算机上都有不同的用户,这会增加复杂性。从 M1 到 M3 的 SSH:

[email protected]: ~ $ ssh -J [email protected] [email protected]

remotefile从 M3 前往 M1:

scp [email protected] [email protected]:remotefile localfile

相关内容