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 停机后,我可以继续我的工作?
我认为只要这两台计算机意识到它们已经共享连接就应该是可能的,还是我错了?
感谢您的时间和想法:)
通常的方法是在A或C的路由器上设置“NAT端口转发”。(如何完成取决于路由器,但到处都有说明。)一旦这样做,您就可以连接到C路由器的公共地址+“转发”端口,并且连接将通过C。
(注意:NAT 端口转发和 SSH 端口转发是相似但不同的东西,就像锤子和螺丝刀一样。不要混淆它们。)
如果您没有任一路由器的管理访问权限,您可以尝试使用 UPnP 或 NAT-PMP 来设置端口转发规则,就像许多游戏和 P2P 程序所做的那样。为此,请使用upnpc
或natpmpc
命令。
如果上述方法均不起作用,则您将需要某种形式的NAT 打洞。(另请参阅TCP和ICMP打洞文章。)
不幸的是,虽然它广泛用于各种特定程序,但似乎没有很多用于TCP 的通用工具,尽管chownat可能有效。