我需要在远程 Linux (CentOs) 服务器上使用 GUI 进行工作(我测量了iperf
这两台机器之间的连接速度约为 8Mbits/sec)。我总是使用ssh -X
它而不是 VNC,因为:
- 我只需要打开一个窗口,所以我喜欢将它作为一个窗口,就像我在计算机上打开这个程序一样
- 我可以使用我的 SSH 密钥
- 我希望软件能够适应我的桌面大小,而不是虚拟 VNC 桌面(虽然我猜 VNC 也有这个选项)
但这里出现的情况是,使用 VNC 的 GUI 比使用 SSH -X 快得多,当我使用它时,我可以更快地看到 GUI 中的变化,所以我不得不使用它。
在我看来,VNC 只是发送屏幕变化部分的压缩图像,这比需要将所有信息发送给我的 SSH 快得多。
例如,使用 ssh -X 时,我点击 Firefox 的“文件”菜单并显示它需要 5 到 10 秒的时间才能做出反应。使用 VNC 时则没有明显的延迟。
所以我的问题是:
- VNC 预计会比 ssh -X 快很多吗?
- 如果没有,我该如何排除故障以了解为什么 ssh -X 这么慢?
答案1
是的,X11 是网络透明的,因此能可以通过网络使用。但是,X11 也是非常繁琐的协议,这意味着通常需要数百个请求/响应周期才能显示一个窗口。这就是为什么网络上的 X11 通常仅在本地使用,即使 1GBit/s 也与 100Mbit/s 连接有很大不同。
有几种方法可以解决这个问题,VNC 就是你提到的那个,NoMachine 的 NX是另一个 - 它通过缓存、代理和压缩优化了 X11 协议,即使在 ISDN 等慢速链路上也能提供近乎实时的性能。它的免费版本功能有限。核心 NX 协议有免费实现(因为它是开源的),例如自由NX(服务器端)和OpenNX(客户端),但两者都没有得到非常积极的开发,并且存在一些错误,使得它们不太适合日常使用。