我的家庭网络中有一台 PC,我需要能够通过 VNC(或其他一些等效协议,这真的没关系)远程访问世界各地。由于安全原因,它不允许任何直接传入连接,也没有静态 IP。我还有一个服务器,可以通过 SSH 访问,它有一个静态 IP,没有防火墙。它与家用 PC 不在同一个 LAN 中。
现在,我有没有办法将我的家用 PC 连接到中间服务器,以便我可以通过使用第三台设备登录到该服务器来控制它?
到目前为止,我为 VNC 隧道找到的所有解决方案似乎只在服务器和隧道共享同一个 LAN 时才有效,以便可以建立从中间服务器到 VNC 设备的直接连接。这不是我想要的——我想在 VNC 服务器和中间服务器之间建立永久(或自动重新连接)连接。
所有设备都运行 Linux。
好的,我想我自己找到了一个解决方案(虽然有点原始)。我写了一个简单的脚本,让我想访问的机器执行
每 30 秒。只要服务器上没有运行 VNC 查看器,这当然会失败。所以它会失败,机器会再次尝试。
当我想实际访问机器时,我通过启用 X11 转发的 SSH 连接到中间服务器。现在,我在该中间服务器上启动了启用反向连接的 vinagre。之后,运行 x11vnc 的机器可以实际连接到服务器并建立反向 VNC 连接,其结果窗口通过 X11 转发显示给我。
这当然不是最优雅的解决方案。这意味着来自受控机器的图像通过vnc压缩到中间服务器,然后解压缩,然后再次压缩以进行X11转发。这在性能方面不是一个很好的解决方案,尽管简单桌面应用程序的反应速度仍然可以用于我的目的。如果您知道更好的选择,请随时回答!