Mac 下远程访问 Ubuntu 桌面

自从给项目组每个人开了一个 Xen VPS 后麻烦就不断,一会儿要求加硬盘,一会儿要求加内存,还有人想在上面跑图形桌面,完全不顾 VPSee 的业余时间:(,昨晚简单测了一下多个 Ubuntu 9.04 桌面系统同时运行在一个服务器上(用 Xen 虚拟化)的情况,速度还可以,比想像的要好。主要时间都浪费在配置上,比如配置 FreeNX、VNC 等,网上教程都不全,用了不少时间排错。这里介绍 Mac 通过网络远程访问 Ubuntu 桌面的常用三种方法,最好的方法应该是用 FreeNX,安全而且速度快:

X11

这是最简单最方便的方法,不需要在 Ubuntu 端做任何配置,不过在 Mac 端必须已装有 X11,在 Terminal 上敲(把 ubuntu 换成对应的服务器 IP 地址或域名):

$ Xnest -geometry 1280x800 :1 & DISPLAY=:1 ssh -X ubuntu  gnome-session

mac x11 forwarding

FreeNX

上面用 X11 forwarding 的方法虽然很简单,在局域网内用用还可以,如果想在 Internet 上连一个远程桌面的话就不合适了,速度很慢。FreeNX 有安全、速度快、功能强等优点,尤其适应网络环境恶劣的情况。按照 Ubuntu 的一篇帮助文档:FreeNX执行如下步骤:

$ sudo vi /etc/apt/sources.list
deb http://ppa.launchpad.net/freenx-team/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/freenx-team/ppa/ubuntu jaunty main

$ sudo apt-key adv --recv-keys \
--keyserver keyserver.ubuntu.com 2a8e3034d018a4ce

$ sudo apt-get update

$ sudo aptitude install freenx

$ sudo /usr/lib/nx/nxsetup --install 

下载一个 Mac NX 客户端连接服务器报错,查看日志后发现 authenticate 没通过,怀疑是 SSH keys 问题:

The NX service is not available or the NX access was disabled on host 172.X.X.X.

在 NX 服务器端修改 sshd_config 文件:

$ sudo vi /etc/ssh/sshd_config
AuthorizedKeysFile      /var/lib/nxserver/home/.ssh/authorized_keys2

$ sudo /etc/init.d/ssh restart

在 NX 客户端把 /var/lib/nxserver/home/.ssh/client.id_dsa.key 文件拷贝到客户端后,用 NX 客户端工具导入。NX 客户端再次连接 FreeNX Server,依然报错,不过错误信息变了:

NX> 103 Welcome to: ubuntu user: root
NX> 105 listsession –user=”root” –status=”suspended,running” –geometry=”1440x900x32+render” –type=”unix-gnome”
mktemp: cannot create temp file /tmp/nxserver_tmp.rQAHzfLbK: Permission denied
/usr/bin/nxserver: line 273: $TMPFILE: ambiguous redirect

显然是 /tmp 权限问题,这个问题很容易解决:

$ sudo chmod 777 /tmp

再次连接,终于看到了 Ubuntu 桌面,如果你不需要太高的安全性,到这里就可以结束了,enjoy it.

上面的连接使用的是默认的 SSH Keys,会带来安全隐患,如果需要更高的安全性可以用自己定制的 SSH Keys,重新配置:

$ sudo dpkg-reconfigure freenx-server

上面命令会弹出对话框,选择 ”Create new custom keys” 后,会在 /var/lib/nxserver/home/custom_keys/ 下创建一个 client.id_dsa.key 文件,把这个文件拷贝到 NX 客户端,然后在客户端导入这个 Key 文件就可以正常连接 FreeNX 服务了。如果 key 通过了认证,可以在服务器端和客户端删除这个 key 文件。

VNC

还有一种古老的方法就是使用 VNC,和 FreeNX 相比VNC 速度较慢,因为 FreeNX 是将 X Window 的数据压缩后传输到远程客户端显示,而 VNC 则是直接截取屏幕后传输过去,在较差的网络中这种延迟和速度差异很明显。先在 Ubuntu 上装一个 VNC Server:

$ sudo apt-get install vnc4server
$ vncserver :1 -geometry 1024x768 -depth 16

然后在 Mac 上装一个 VNC Viewer(推荐 Chicken of the VNC)就可以连上 Ubuntu,不过这个时候看到的是 X Window 界面,不是 Ubuntu 桌面,在 X Window 中手动启动 Ubuntu 桌面:

$ gnome-session &

如果不想每次都手动的话,在当前用户目录根目录下修改 ~/.vnc/xstartup:

$ vi ~/.vnc/xstartup
# twm &
gnome-session &

$ sudo shutdown -r now

$ vncserver :1 -geometry 1024x768 -depth 16

重新启动 Ubuntu 并打开 VNC Server 服务,用 VNC 客户端连接就可以看到 Ubuntu 图形桌面了。

评论 (7 Comments)

  1. 请问用的是什么Wordpress的主题? 很不错

  2. 呵呵,主题是自己在 sandbox 上改的,不过你可以看看这个 http://wordpress.org/extend/themes/plainscape, 风格和我这个差不多~~

  3. 我登陆了远程桌面,如何在远程桌面安装firefox?

  4. # apt-get install firefox 或者在 Applications->Ubuntu Software Center 里面装。

  5. 请问LZ,此文已有些老,现在是否有新的方法了?

  6. 现在的splashtop很好用,它用的算法似乎比NX的更好,效率更高。我甚至能用它在安卓平板上远程登录Linux桌面看电影,用不到200k带宽就能比较流畅地看720p的电影。

  7. 我想问一下我用X登录之后显示的在Linux端的用户名和我的Mac端的用户名是一样的,应该如何做修改?

发表评论