我需要通过 VNC 从我的机器 A 连接到属于我朋友 B 的另一台机器。我们俩都无法打开传入端口 - 除非您购买基于静态 IP 的商业计划,否则 ISP 不允许隧道。两者都是linux系统顺便说一句
我们有一个具有完全访问权限的 Web 服务器,我们都可以通过 ssh 进入。我们如何设置从任一端到服务器的隧道以便 VNC 工作?
我知道如何在两个系统之间建立一个 ssh 隧道,我相信通过首先在 A 到 B 然后在 B 到 C 上运行 ssh 来实现 A->B->C 并不难
但我需要 A->C 和 B->C 而不是 A->B 和 B->C
基本上我认为我需要一个代理服务器——这可以通过 SSH 甚至某种 linux 网络魔法来完成吗?
这可能是也可能不是您正在寻找的答案,但有两项服务可供您查看:
他们做的事情大致相同。两者都允许您在多台计算机之间创建虚拟专用网络,而无需进行任何防火墙或端口转发配置。这两项服务都有免费套餐,但如果您需要连接大量计算机,ZeroTier 允许更多计算机使用其免费版本。两者都适用于 Linux、Windows 和 Mac OS(ZeroTier 也适用于许多其他平台)。
假设 C 是你们(A:您和 B:您的朋友)都可以访问的网络服务器。
C 的设置:将 gatewayports yes 添加到配置
vim /etc/ssh/sshd_config
在底部添加“GatewayPorts yes”,以便远程主机将侦听 0.0.0.0 接口而不是 127.0.0.1 接口
网关端口 是
B的设置:将本地主机的“port2”转发到远程主机(C)的“port1”
ssh -i auth.pem -R 0.0.0.0:port1:localhost:port2 [email protected]
A的设置:不需要转发。
您现在可以使用 VNC 连接到 C 的端口 2,同时实际查看 B 的屏幕。