我应该在哪台服务器上执行 ssh 端口转发命令?

我应该在哪台服务器上执行 ssh 端口转发命令?

我有一台 Macbook A、一台公共服务器B(public IP: 1.2.3.4, internal IP: 10.0.0.2)、一台内部服务器C(internal IP: 10.0.0.3)

AB可以通过 B 的公网 IP连接,也可以通过 C 的私网 IPB连接,但不能直接连接CAC

现在我想C:2345从连接到A,所以我想我可以在 中进行端口转发B:1234=>C:2345

我应该运行什么命令以及在哪台服务器上运行?

我试过:

ssh -NfR 1234:localhost:2345 10.0.0.3
ssh -L 1234:0.0.0.0:2345 10.0.0.3

两者都不起作用。

答案1

去做确切地您所请求的(B:1234=>C:2345)应该在以下位置运行B

# Not recommended. Read along.
ssh -NgL 1.2.3.4:1234:localhost:2345 10.0.0.3

它还需要1234B防火墙中打开端口。然后1.2.3.4:1234从外部连接到10.0.0.3:2345,就像您从本身连接一样C(通过其环回接口)。任何人都可以连接,所以请记住,如果服务器C(无论是什么服务器)没有密码保护等。


A以下是从到 的一种更简单、更安全的方法C。它不会完全按照您的要求执行,但可能正是您想要的。在 上A

ssh -NL 1234:10.0.0.3:2345 1.2.3.4

然后连接到127.0.0.1:1234以访问上的A端口。将看到来自 的流量。此连接仅适用于,因此该方法比前一种方法更安全。2345CCBA

如果您想允许其他计算机(例如:来自 LAN 的计算机A)连接,您应该使用-g选项并指定绑定地址。例如:

ssh -NgL A_LAN_address_here:1234:10.0.0.3:2345 1.2.3.4

在这种情况下,请相应地重新配置防火墙A,然后连接到A_LAN_address_here:1234

答案2

在 Mac 上,你首先要执行

ssh -L2345:10.0.0.3:2345 10.0.0.2

这将在你的 Mac 上打开本地端口 2345,该端口可直接连接到 10.0.0.3 上的 :2345

然后,您只需127.0.0.1:2345在 Mac 上访问即可。任何进入此端口的内容都将通过 ssh 隧道传输到10.0.0.3:2345。对于该服务器,它将显示为来自10.0.0.2

相关内容