如何在两台计算机之间创建 ssh 隧道?

如何在两台计算机之间创建 ssh 隧道?

假设有三台计算机,A、B、C。

计算机 A 需要通过端口 9103 连接到计算机 C。

但是它无法到达 C。但它可以到达计算机 B,而计算机 B 可以到达计算机 C。

我知道这可以通过 ssh 隧道来完成。然而,让事情变得复杂的是,由于防火墙的原因,计算机 A 无法 ssh 进入计算机 B,但 B 可以 ssh 进入计算机 A。因此可以从 B 创建反向 SSH 隧道,以便 A 可以到达 B。

有没有办法在计算机B上创建隧道,使得计算机A可以通过计算机B到达计算机C?

答案1

在B上创建一条从A:59103开始的反向隧道。相对于 B 的端点是 C:9103。

ssh -R 59103:C:9103 A

将 A 上的端口号从 59103 更改为合适的端口号。

该解决方案采用您的陈述,即 B 可以从表面上达到 C。从 B 到 C 的连接不受 保护ssh

答案2

如果您想要稍微花哨一点,您可以nc按需建立一个隧道(如果nc安装在 B 上),如下所示(来自主机 A):

$ ssh C -oProxyCommand='ssh -q B nc C 9103'

该代理命令意味着到sshB 并运行nc连接到 C 上的端口 9103 作为来自 A 的 ssh 连接的隧道。

如果这是您经常做的事情,您应该将其放入~/.ssh/config主机 A 上,并执行以下操作:

host C
    ProxyCommand ssh -q B nc C 9103

那么命令行很简单:

$ ssh C

相关内容