我有两台电脑,我想通过 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)。
- 连接PC1和PC2到附言(传出流量,无路由器配置)。
- 从以下位置连接 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
本地端口。单击添加时,您将在转发端口列表中看到类似5902
localhost:5901
L5902 localhost:5901
现在您有两条隧道连接到公共服务器。如果您从 PC2 运行 VNC 查看器并指向 localhost:5902,则应该连接到 PC1 上监听端口 5900 的 VNC 服务。
希望能帮助到你。