VNC和ssh -X之间的区别


27

为什么要使用VNC(或与此相关的NX)而不是仅使用ssh -X (-Y)。我读到VNC使用的带宽较少,但是各个工具是否还有其他区别/优势?

Answers:


30

除了带宽和延迟问题(可能有所不同)外,最大的不同在于它提供的功能。

VNC导出整个会话,桌面和所有会话,而ssh将运行一个程序,并在您的工作站上显示其窗口。

VNC服务器将导出一个会话,即使您断开屏幕连接,该会话也可以保留,以后您可以在所有窗口打开等情况下重新连接到该会话。对于ssh X隧道,这是不可能的,因为当X服务器死机时,窗口就会消失。


5
这就是我一直使用VNC而不直接使用X窗口的最大原因。(我在ssh隧道上使用VNC)。当我关闭笔记本电脑的盖子时,连接断开。使用ssh -X,无法恢复-我必须从头开始重新启动应用程序。使用VNC(直接和通过ssh隧道),我可以重新连接并从上次中断的地方继续。
大卫·卡里

8
尽管有点过时(因为这个Q大概仅关于GUI应用程序):如果不需要实际的GUI应用程序,并且仅需要基本的shell访问(例如xterm),则先执行“ ssh”,再执行“ screen bash”。如果断开连接(笔记本电脑关闭,vpn断开连接等),则远程外壳将保持活动状态。通过“ screen -r”重新登录并重新连接。我之所以提出这一点,是因为我看到人们运行vnc只是为了进行基本的shell访问(或运行本地显示的远程xterm)。在大多数情况下(当然并非总是如此),简单的shell访问就足够了。
迈克尔2012年

1
@michael_n我对您所说的有关屏幕冲击的东西很感兴趣,但是我无法使其工作。我输入了“ ssh -X -t myusername @ remotehost screen bash”,并且在连接断开后,我输入了“ screen -r”,但是它说“没有要恢复的屏幕”。我该怎么办?
simona,2012年

2
@simona成功ssh登录后,再运行画面:ssh user@host; 并登录后:screen bash; 断开连接,ctrl+a然后按ctrl+d。您可以注销并再次登录,然后:screen -lsscreen -r。退出bash退出屏幕会话。有关更多(更多)的信息,请参见GNU屏幕上的各种教程
michael

9

ssh -X将X11命令重定向到本地X服务器。因此,就好像您实际上在另一端的计算机上运行该程序一样,是在本地运行该程序。这慢,因为它占用大量带宽。(这就是人们所说的X11是“网络透明的”。)

相反,VNC和其他远程桌面应用程序让另一台计算机处理所有图形绘图等,并从本质上捕获屏幕截图并将其发送回您的计算机。它看起来可能快得多,因为显示所有内容所需的信息少得多。但是,它还会发送整个桌面,而不是单个应用程序。

我不建议通过ssh -XInternet使用一个简单原因:它使用您所有可用的带宽。我认为它在LAN上非常有用,因此,如果您只需要一个应用程序而又不想运行整个桌面,那么这是一个不错的方法。否则,只需使用VNC。


3
“它非常慢,因为它占用了大量带宽。X11协议非常复杂,通常涉及在连接之间来回发送大型像素图。” -这是错误的,X11协议不是很复杂,它不涉及通过连接来回发送大型像素图。快来加入此提案,以了解有关X窗口系统的更多信息:area51.stackexchange.com/proposals/20129/the-x-window-system

1
@Sherlock:好吧,事实仍然是它占用大量带宽。我删除了有罪的句子。
greyfade 2010年

1
NX是通过网络传输X11协议数据的有效方法。它压缩数据,通过SSH提供广泛的缓存和隧道会话。
亚当·伯特克

4

VNC将从远程系统共享整个桌面。它要求远程系统上有完整的桌面。

ssh -X允许您从远程服务器运行单个X应用程序。远程系统不需要运行完整的桌面,并且您通常只需要在远程系统上安装少量软件包即可。

ssh -X通过远程连接安装复杂的软件包时非常有用。某些软件产品可能使用GUI安装程序(Oracle数据库等)。我不想在远程服务器上安装完整的Gnome桌面。因此,您在远程服务器上安装了一个或两个X11软件包(Xauth?),并允许DBA使用“ ssh -X / media / cdrom / oracle-installer”之类的简单方法远程运行Oracle安装程序。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.