使用一台公共 SSH 服务器建立从 A 到 C 的直接 SSH 连接,无需公共 IP

jir*_*lav 5 networking linux ssh port-forwarding

我有这些 SSH 服务器/客户端:

A - 没有公网IP

B - 公共 IP

C - 没有公网IP

我知道,我可以建立从 A 到 C 的 SSH 连接,如下所示:

1) 将 C 挂接到 B。从 C 开始:

ssh -R 10100:localhost:22 B_IP

2) 使用 B 挂钩设置从 A 到 C 的端口转发,以便能够在机器 A 上使用 ssh-agent:

ssh -L 5000:localhost:10100 B_IP

3) 现在我可以使用我的 ssh 密钥从 A“直接”访问 C:

ssh -p 5000 localhost

……我的观点是:

我能否以某种方式建立从 A 到 C 的新“纯”连接,以便在机器 B 停机后,我可以继续我的工作?

我认为只要这两台计算机意识到它们已经共享连接就应该是可能的,还是我错了?

感谢您的时间和想法:)

use*_*686 3

  • 通常方法是在A或C的路由器上设置“NAT端口转发”。(如何完成取决于路由器,但到处都有说明。)一旦这样做,您就可以连接到C路由器的公共地址+“转发”端口,并且连接将通过C。

    (注意:NAT 端口转发和 SSH 端口转发是相似但不同的东西,就像锤子和螺丝刀一样。不要混淆它们。)

  • 如果您没有任一路由器的管理访问权限,您可以尝试使用 UPnP 或 NAT-PMP 来设置端口转发规则,就像许多游戏和 P2P 程序所做的那样。为此,请使用upnpcnatpmpc命令。

  • 如果上述方法均不起作用,则您将需要某种形式的NAT 打洞。(另请参阅TCPICMP打洞文章。)

    不幸的是,虽然它广泛用于各种特定程序,但似乎没有很多用于TCP 的通用工具,尽管chownat可能有效。