VNC 连接:使用 VPS 绕过防火墙

VNC 连接:使用 VPS 绕过防火墙

我有一个朋友住得很远,需要技术支持。到目前为止,我无法通过电话诊断问题,所以我想使用 VNC 连接来远程排除他的电脑故障。我们都有 Mac。

问题是他位于防火墙后面,并且所有端口都经过过滤(使用 nmap 检查)。由于我也位于防火墙后面,我想知道是否可以设置某种到我的 Linode VPS 的转发连接。即,我们都将连接到我的 VPS,并且我的所有 VNC 流量都将通过 VPS 转发到我朋友的计算机(并且由于我们都发起了与 VPS 的连接,因此不会出现任何防火墙问题)。

答案1

您需要一个反向 SSH 隧道和一个常规 SSH 隧道,然后将它们在中间连接在一起。

我们有 3 台机器。朋友、服务器、Mac。

从朋友那里,您可以使用 SSH 连接到服务器,并建立反向隧道。

ssh -R 9999:localhost:5900 user@Server

这将创建一个从朋友到服务器的 ssh 会话。在服务器上,它监听端口 9999(在本地主机地址上),并将该端口上的任何内容转发回端口 5900 上的朋友(通过 ssh 隧道,因此防火墙不会阻止它)。

在 Friend 上,您现在需要确保有一个 VNC 服务器在监听端口 5900(这是 VNC 服务器的默认端口)。

然后,在 Mac 上执行以下操作:

ssh -L 9999:localhost:9999 user@Server

这会将您这边端口 9999 上的所有内容通过隧道传输到服务器上本地主机的端口 9999。由于服务器上的 9999 随后被转发给朋友,因此您已将隧道连接在一起。

现在,您可以在 Mac 上打开 VNC 客户端,并将其连接到端口 9999(即,当它询问连接到什么时,您就连接到127.0.0.1:9999)。

服务器上的 ssh 守护进程需要支持端口转发才能正常工作。

您可以只使用一个隧道(使用略有不同的格式的来自朋友的反向隧道)来执行此操作,但这会使朋友的计算机面临风险,因为它将允许任何人通过连接到服务器的公共 IP 地址上的端口与朋友进行 VNC 连接。这样,只有您可以连接。

相关内容