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