使用 SSH 使用/通过 PC_C(具有公共 IP)将 PC_A(具有私有 IP)连接到 PC_B(具有私有 IP)

使用 SSH 使用/通过 PC_C(具有公共 IP)将 PC_A(具有私有 IP)连接到 PC_B(具有私有 IP)

基本上

我有一个客户端运行在电脑_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 客户端。

相关内容