如何与无头服务器进行图形界面交互?

我在工作中有一台Ubuntu开发服务器。它是一台位于公司地下室的旧机架服务器,几乎没有人去过那里。它只能作为无头服务器运行(即不连接显示器/键盘,仅接受网络连接)。
显然,如果只需要终端访问,ssh已经足够了。但是,我也想偶尔连接到图形界面。目前我正在使用内置的VNC功能,但我相信这既不是最高效的方法,也不是最安全的方法来解决此问题。
我对这个问题进行了一些研究,但未能得出任何明确的结论。我读到过尝试通过ssh转发X环境的方法,这至少可以解决我的安全问题。有人可以分享他们建立这样设置的经验吗?还有其他值得考虑的方法吗?
我几乎只从Windows机器连接到这台服务器。不知道这可能会成为一些建议方法的问题。
9个回答

是的,通过ssh进行X转发确实是一件美妙的事情。它允许您逐个应用程序地使用图形应用程序,并由您自己的桌面环境处理窗口。您甚至不需要在服务器上安装桌面环境。
但是,您需要设置一些身份验证内容才能使其正常工作。我相信您需要xauth来完成这项任务。
而且,它比VNC快得多。在我个人的经验中,VNC总是有些卡顿。
编辑: 我没有在Windows上使用过这种方法的经验,但是如果您感兴趣,我为您找到了this tutorial

2"ssh -X <server> <program>" 应该可以设置好一切(虽然我从来没需要过自己动手操作 xauth,但是为了让 ssh 的 -X 选项工作,xauth 必须被安装)。 - Suppressingfire
@Suppressingfire:哦,谢谢。我想我应该自己包含这个命令了。 - DLH
2是的,X转发在Windows上可以工作。我曾经在Windows XP上使用过Cygwin/X。虽然不是最快或最漂亮的,但确实可以工作。 - mp3foley
ssh X11转发还限制了您需要在服务器上启用的服务!我怀疑大多数服务器都已经安装了ssh。启用远程X11(XDMCP)并不被认为是安全的。 - LassePoulsen
1教程链接现在已经失效,请问是否有人可以更新一下? - owl

你可以使用freenx代替vnc。Freenx传输x命令(带有缓存),而不是位图。

我可以在Windows机器上使用吗? - silvo
2我相信你可以下载适用于Windows的NoMachine NX客户端,并且它与FreeNX兼容-尽管我可能错了。 http://www.nomachine.com/download.php - manyxcxi

XmingXDMCP是一个很棒的选择。

编辑:

Xming是一个基于Cygwin的Windows X服务器,具有共享剪贴板和实现不同桌面布局的能力。

XDMCP是一种简单但重要的非加密协议(不要在互联网上使用),用于连接X显示管理器和X服务器。


你可能应该编辑答案,更详细地说明为什么以及如何运作。了解Xming和XDCMP的含义,这是最好的选择。 - Ressu
我会做的。 - ddeimeke

我不知道什么是“最好”的方法,我猜可能因人而异,但这里有一个相当全面的工具概述供您选择:http://www.mynitor.com/2010/02/07/15-remote-desktop-solutions-for-linux/ 特别是以下是我的经验:
1. NoMachine NX - 速度令人印象深刻。在本机模式下,感觉就像坐在控制台前一样。它支持启动新会话以及影子控制台(但是影子操作较慢)。它支持分离和附加到会话。剪贴板共享只能单向工作,我无法修复。nomachine提供了免费的服务器和客户端软件包,但有一些许可限制。
FreeNX 是基于nomachine nx库构建的。
2. X2Go - 我也对这个印象深刻,尤其是声音重定向功能,但是由于我后来才了解到它,所以没有像使用nomachine nx那样长时间使用它。
3. X11VNC - 一个很棒的VNC服务器,可以连接到控制台会话。我将它与nomachine nx一起使用。我不确定它是否可以在无头模式下运行,但我列出它是因为对我来说它是最快的VNC服务器。
4. XRDP - 看起来很有前途,但似乎已经停止维护。OpenSuse nomad解决方案是基于xrdp的,我听说nomad在Linux上是最好的远程桌面体验。
5. TeamViewer - Linux版本仍处于测试版,运行在Wine下并消耗一些CPU资源,但我最近经常使用它,并对它感到满意。不确定它是否在无头服务器上可用。

此外,还可以考虑使用xpra,它允许您从其他地方分离到一个正在运行的会话中,就像“X屏幕一样”。
另外,还有Window Shifter,这是xpra的前端界面,应该也适用于Windows,请查看演示

1这看起来很有趣。 - Li Lo

我在Ubuntu上成功使用了freenx,并使用http://nomachine.com的Windows客户端。
对我来说,这是为了让我能够将一台旧的平板电脑(即使安装了干净的Windows XP,也运行困难)作为一个更强大的Ubuntu桌面机器的前端。
我唯一遇到的问题是需要将“视觉效果”设置为无以获得良好的性能。
我本来想评论txwikinger关于nxserver的回答,但是我声望不够。

虽然本质上不安全,但你可以在本地网络上使用XDMCP。我经常使用它来访问虚拟机。就像登录你的桌面一样,只是你选择了远程服务器。

我使用x11vnc,对我来说非常好用。它可以在连接之间保持一个持久的图形会话,所以你可以断开连接然后重新连接,一切都会和你离开时一样。它还支持通过SSH进行隧道传输。请参阅这些Ubuntu社区文档,了解简短描述和设置说明。

远程X访问的设置可能令人望而生畏,并涉及多个步骤。

我使用x2go,它可以即装即用,非常易于使用。它提供了完整的桌面,就像您连接了新屏幕和键盘到服务器一样。它具有完整的X功能。

x2go不是“远程桌面”解决方案。您会获得一个全新的会话。但是,您可以使用x2go客户端从同一台或不同的计算机断开并重新连接;您的桌面是持久的。最重要的是,客户端机器上的桌面可以通过调整窗口大小实时缩放。

x2go使用ssh进行传输,因此您的数据已加密。这简化了穿越防火墙的过程。 ssh传输似乎不会影响速度。

x2go客户端软件适用于Linux、Windows和Mac。

非常好的免费开源软件。我每天都在使用它。