如何从我的Mac通过X窗口访问远程Ubuntu服务器?

我有一台远程运行在云主机服务上的Ubuntu服务器(12.04 LTS)。我通过apt-get安装了ubuntu-desktop。
$ sudo apt-get install ubuntu-desktop

看起来安装没有问题。
我已经确认服务器上的/etc/ssh/ssh_config文件包含以下行。
ForwardAgent yes
ForwardX11 yes
ForwardX11Trusted yes

而且服务器上的/etc/ssh/sshd_config文件包含以下行:

X11Forwarding yes

然后我重新启动了服务器。它顺利地恢复了正常。

现在,在我的 Mac 上启动 X11.app,我看到一个 Xterm 终端。

我使用这个终端连接到我的服务器:

$ ssh -X <myhost>

我连接到服务器,没有问题。
此时我不知道该怎么办。我已经尝试过了。
$ sudo startx

但是我遇到了一个“找不到屏幕”的错误。
因为它是一个无头云服务器,所以我没有屏幕,但我只是想通过X从我的Mac访问它。
现在怎么办?

2尝试安装xvfb。我对它不太熟悉,但它的作用类似于一个没有硬件的屏幕。 - nanofarad
3个回答

有几种方法可以实现这一点,具体取决于您真正需要做什么。
为了将远程应用程序转发到本地的X环境,您需要在Mac上安装X11(您可以在苹果支持网站上找到它):http://support.apple.com/kb/DL1605?viewlocale=en_US&locale=en_US 从X11应用程序中打开终端,然后使用以下命令访问远程主机:
    ssh -XC user@host

然后,登录后,只需运行所需应用程序的命令,例如:firefox,nautilus,thunderbird等等...
您甚至可以仅启动系统(Ubuntu,Xubuntu,Mint等),并从那里与远程系统进行交互,而无需完整的图形界面。在远程Linux Mint环境中,我只需运行:
    mintmenu&

如果你真的需要它,甚至可以在你的Mac的X11上本地启动远程图形环境,只需运行:
    ubuntu-session
    xubuntu-session
    etc... (depends of your remote environment)

比任何VNC都要好,甚至比X11VNC连接还要好!安全且压缩的连接,赢在起跑线上。

在您的Mac上,如果您尚未安装XQuartz(请参见http://xquartz.macosforge.org),您需要先安装它。安装完成后,请重新启动并打开一个XQuartz终端窗口,然后通过SSH连接到您的Ubuntu服务器系统。
ssh -X yourubuntuserver

如果lightdm正在运行(请参阅https://askubuntu.com/a/153423/66799以了解如何根据需要打开和关闭它),运行以下命令将Ubuntu Unity通过X11隧道传输到您的Mac上:
gnome-session --session=ubuntu-2d

这对我来说在Ubuntu Server 12.04 LTS和Mac OS X Mountain Lion 10.8.2上都有效,但是偶尔会出现Composiz错误。话虽如此,当我在本地运行Ubuntu Desktop时,也总是会遇到Composiz错误。(-:

你可以退出Unity以关闭Ubuntu Desktop窗口。


这个有效,XQuartz是必需的。 - ABCD
在Windows 10上使用WSLXming进行显示效果非常好。 - Harsh

你的想法是对的,但语法有误 :)
因为它需要一个屏幕(也就是X服务器)来进行通信,所以startx不能在像那样的ssh上启动。
尝试使用以下命令来启动桌面图形界面。
sudo service gdm start

这将启动桌面环境。
断开连接。
然后尝试。
ssh -X nautilus username@host 

注意:未测试上述行

如果一切正常,您应该看到Ubuntu文件管理器弹出窗口。如果没有,可能是缺少某些库或命令的语法错误(我没有尝试过,只是凭记忆说的)。


6没有必要(或理由)运行 sudo service gdm startX 服务器SSH 客户端上运行--也就是作为工作站使用的机器。对于 ssh -X 来说,它不需要在远程机器上运行。 - Eliah Kagan
啊,我之前不知道这个,谢谢你提供的信息。 - Matt Mootz