为什么要使用 VNC(或 NX)而不是仅仅使用ssh -X (-Y)
.我读到 VNC 使用较少的带宽,但是各个工具还有其他差异/优点吗?
答案1
除了带宽和延迟问题(可能略有不同)之外,最大的区别在于它提供的功能。
VNC 导出整个会话、桌面等,而 ssh 将运行单个程序并在您的工作站上显示其窗口。
VNC 服务器导出一个会话,即使您断开屏幕连接,该会话仍然存在,并且您可以稍后在所有窗口打开等情况下重新连接到它。这对于 ssh X 隧道来说是不可能的,因为当您的 X 服务器挂掉时,窗口就会消失。
答案2
ssh -X
将 X11 命令重定向到本地 X 服务器。因此,就好像您在本地运行该程序,而实际上它是在另一端的计算机上运行的。它是非常速度慢,因为它使用大量带宽。 (这就是人们所说的 X11 是“网络透明”的意思。)
相反,VNC 和其他远程桌面应用程序让另一台计算机处理所有图形绘制等,并捕获实质上的屏幕截图并将其发送回您的计算机。它看起来要快得多,因为显示所有内容所需的信息要少得多。但是,它还发送整个桌面,而不是单个应用程序。
我不建议ssh -X
通过互联网使用,原因很简单:将要使用所有可用带宽。在我看来,它在 LAN 上相当有用,因此如果您只需要一个应用程序并且不想运行整个桌面,那么这是一个很好的方法。否则,只需使用 VNC。
答案3
VNC 将从远程系统共享整个桌面。它需要远程系统上有一个成熟的桌面。
ssh -X 允许您从远程服务器运行单个 X 应用程序。远程系统不需要运行完整的桌面,并且您通常只需要在远程系统上安装少数软件包。
ssh -X
通过远程连接安装复杂的软件包时非常有用。某些软件产品可能使用 GUI 安装程序(Oracle 数据库等)。我不想在我的远程服务器上安装成熟的 Gnome 桌面。因此,您在远程服务器上安装一两个 X11 软件包(Xauth?),并允许 DBA 使用“ssh -X /media/cdrom/oracle-installer”等简单命令远程运行 Oracle 安装程序。
答案4
使用 VNC 或 NX (X2Go) 还具有安全优势。恶意应用程序无法截取屏幕截图或使用键盘记录器来记录真实桌面的密钥,但即使恶意应用程序在后台运行,也可以使用带有 X11 转发的 SSH。
如果您使用 SSH -X(或 -Y),您应该信任该应用程序(例如来自官方 Linux 发行包的开源应用程序)或避免在运行它时执行敏感工作。
我能够使用这些跨平台和开源工具验证这一点(在 LXC 容器中测试):