基本上
我有一个客户端运行在电脑_A(PC_A 连接在 LAN 中,因此具有私有IP)
我有一个服务器运行在电脑_B(PC_B 连接在 LAN 中,因此具有私有IP)
==> 我想在两者之间建立联系电脑_A和电脑_B,我不能直接这样做,因为他们有私有IP。
我想到使用隧道使用第三台 PC_C 的 SSH,与已知的公共IP,作为 TCP 下连接两者的桥梁或中继。
你能不能解释一下设置我应该在每台机器上运行 SSH 和命令行吗?
顺便说一句,我使用的是Windows平台。
提前致谢 :)
答案1
您需要第三台服务器,该服务器可以通过 ssh 从 PC_A 访问,并且反过来也可以访问 PC_B;我们称之为 PC_G(网关)。
在 PC_A 上的 $HOME/.ssh/config 中放置以下内容:
Host PC_B
ProxyCommand ssh PC_G nc -w 120 PC_B 22
现在,如果您ssh PC_B
在 PC_A 上执行,ssh 会查找 PC_B 的配置,并发现必须运行指定的代理命令。因此它运行ssh PC_G nc -w 120 PC_B 22
并在 PC_G 上启动命令nc -w 120 PC_B 22
。这是netcat
打开与 PC_B 端口 22(ssh 端口)的连接的命令。现在本地 ssh 可以通过此隧道连接到 PC_B 上的 ssh 客户端。