如何使用服务器通过 ssh 客户端连接两台电脑?

如何使用服务器通过 ssh 客户端连接两台电脑?

我有两台电脑,我想通过 ssh 端口转发通过互联网连接。问题是两台电脑都没有公共 IP。我的想法是使用公共服务器 (ps) 并ssh -R <port>:localhost:<port> <ps-user>@<ps-address>在 PC1 上使用。

对于 PC2,我尝试了两种方法来创建与 PC1 的连接: ssh -p <port> <pc1-user>@<ps-address>ssh -L <port>:localhost:<port> <pc1-user>@<ps-address>。但这两种方法都无法与 PC1 建立 ssh 连接。

我在这里做错了什么?

补充:请注意,我无法在 PC1 和 PC2 上进行端口转发

答案1

因此,如果我理解了你的问题,那么你已经:

  • 内部网络上的 2 台 PC。
  • 您对任一网络上的路由器都没有任何影响。

并且你想要:

  • 设置公共服务器(附言)托管 SSH 服务(我假设端口 22)。
  • 连接PC1PC2附言(传出流量,无路由器配置)。
  • 从以下位置连接 VNC 会话PC2(Windows)PC1(Ubuntu)在端口上5900

您可以通过创建 SSH 隧道、从 PC1 进行远程转发和从 PC2 进行本地转发来实现这一点。

架构如下:架构图

因此,为了使其正常工作,您需要从 Ubuntu PC PC1 使用以下命令连接到 PS:

ssh <ps-user>@<ps-address> -R 5901:localhost:5900

此时,如果您登录到 PC1,您可以运行netstat -latn | grep 5901并看到它在监听。这意味着一半的过程已经完成。

现在客户端连接。从 PC2,如果它也是一个 Linux 机器,您可以使用

ssh <ps-user>@<ps-address> -L 5902:localhost:5901

如果是 Windows,您可以使用 PuTTY,通过设置下面的端口转发部分Connection/ SSH/ ,并添加具有源端口和目标的Tunnels本地端口。单击添加时,您将在转发端口列表中看到类似5902localhost:5901L5902 localhost:5901

现在您有两条隧道连接到公共服务器。如果您从 PC2 运行 VNC 查看器并指向 localhost:5902,则应该连接到 PC1 上监听端口 5900 的 VNC 服务。

希望能帮助到你。

相关内容