本文只适用于Ubuntu 11.04 Desktop以后的桌面环境,由于Ubuntu从11.04开始默认采用Unity作为它的桌面环境,因此之前网上对于Ubuntu早期版本的GNOME桌面环境的VNC配置都不适用。网上费了好大的功夫终于找到一篇能用的博客,首先感谢Minqiang Chen网友的博文,链接送上:http://blog.ptpt52.info/2012/08/ubuntu-1204-unityvnc.html 但是该链接打开速度很慢,于是想着在Minqiang Chen博文的基础上再完善一些,其中的部分图片转自Minqiang Chen的博客。以下的终端既可以是显示器下的终端,也可以是用ssh登陆的终端。

本文主要介绍vncserver和Ubuntu12.04 Unity远程桌面环境的配置,最后介绍了Xfce4远程桌面环境的配置。
   首先安装vncserver以及客户端,终端下输入一条指令就搞定:


$ sudo apt-get install vnc4server

安装完以后在终端下输入:


$ vncserver

首次输入vncserver会提示输入vnc登陆密码,设置完成之后,产生如下信息:

New 'hp-Compaq-Presario-CQ45-Notebook-PC:1 (hp)' desktop is hp-Compaq-Presario-CQ45-Notebook-PC:1

Starting applications specified in /home/hp/.vnc/xstartup
Log file is /home/hp/.vnc/hp-Compaq-Presario-CQ45-Notebook-PC:1.log
主要的意思是vncserver产生了一个新的桌面,其中的:1是端口号,用于vnc客户端远程连接端口的。
并且会根据/home/hp/.vnc/xstartup(即用户主目录下的 .vnc/xstartup)文件的配置进行启动,相关的log运行记录在/hp/.vnc/hp-Compaq-Presario-CQ45-Notebook-PC:1.log
那么我们需要做的是修改xstartup配置文件,终端下输入以下内容进行编辑:


$ gedit ~/.vnc/xstartup

默认配置文件~/.vnc/xstartup如下:



#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[-x /etc/vnc/xstartup ]&&exec/etc/vnc/xstartup
[-r $HOME/.Xresources]&& xrdb $HOME/.Xresources
 xsetroot -solid grey
 vncconfig -iconic &
 x-terminal-emulator -geometry 80x24+10+10-ls -title "$VNCDESKTOP Desktop"&
 x-window-manager &

采用默认配置可能存在的问题:
1. 采用默认配置,你登陆到vnc桌面后,只能看到桌面背景和一个终端,其他什么也没有,如下图。


2. 登陆时出现 Counld not acquire name on session bus 等错误提示,如下图。

以下是网友Minqiang Chen的正确配置,解决上述问题,附带说明:
修改后的~/.vnc/xstartup如下:


#!/bin/sh

# Uncomment the following two lines for normal desktop:
 unset SESSION_MANAGER
 unset DBUS_SESSION_BUS_ADDRESS
# exec /etc/X11/xinit/xinitrc

[-x /etc/vnc/xstartup ]&&exec/etc/vnc/xstartup
[-r $HOME/.Xresources]&& xrdb $HOME/.Xresources
 xsetroot -solid grey
 vncconfig -iconic &
 x-terminal-emulator -geometry 80x24+10+10-ls -title "$VNCDESKTOP Desktop"&
# x-window-manager &

export DESKTOP_SESSION=ubuntu-2d
#这个 ubuntu-2d 参考 /usr/share/gnome-session/sessions/ 下的文件名设置成不同的值
export GDMSESSION=ubuntu-2d
export STARTUP="/usr/bin/gnome-session --session=ubuntu-2d"

 $STARTUP

最后的效果如下:

对于其他ubuntu版本下的vnc的配置,网上有非常多的资料可以参考。
在配置完成之后,我们需要重新启动vncserver,对于Centos下可以直接使用service vncserver restart,在Ubuntu下需要在终端输入:


$ vncserver -kill :1

PS:注意这里-kill之后需要加空格,本人就是因为漏了空格不仅没有能够成功关闭端口1的vncserver,反而又启动了一个新的vncserver端口
操作成功之后会出现如下信息:
Killing Xvnc4 process ID 3913
然后再次在终端中输入:


$ vncserver

此时vncserver会再次打开端口1,然后远程电脑就可以使用vnc客户端进行连接了,windows下可以使用realvnc公司的vncviewer,Ubuntu下如果之前没有安装过vncserver的话可以只安装vnc客户端,在终端下输入:


$ sudo apt-get install xvnc4viewer

安装完成之后,如果在本机测试的话输入:


$ vncviewer localhost:1

这里localhost对应本机的ip地址,如果是远程登陆的话将localhost改为要登陆主机的ip地址即可,连接上以后会提示输入密码,输入会出现远程桌面。
默认情况下每输入一次vncserver,系统会自动将端口号加1,从1开始计算,即1,2,3,.....如果想要设置vncserver的服务端口号,那么可以在终端下输入:


$ vncserver :xxx

这里的xxx对应你想要开启的服务端口号。
对于服务器以及提供远程服务的主机来说,可以开启ssh远程登陆服务,通过ssh来开启vncserver,从而登陆到vnc远程桌面。

如果在Ubuntu 12.04下想使用轻量级桌面环境作为vnc远程桌面的话可以考虑Xfce4,安装Xfce也很方便,在终端下输入:


$ sudo apt-get install xfce4

相应的xstartup文件配置如下:

#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# unset DBUS_SESSION_BUS_ADDRESS
#上面这句话如果在xubuntu桌面环境下开启vnc的话最好取消注释
# exec /etc/X11/xinit/xinitrc

[-x /etc/vnc/xstartup ]&&exec/etc/vnc/xstartup
[-r $HOME/.Xresources]&& xrdb $HOME/.Xresources
 xsetroot -solid grey
 vncconfig -iconic &
 x-terminal-emulator -geometry 80x24+10+10-ls -title "$VNCDESKTOP Desktop"&
# x-window-manager &
 x-session-manager &
 xfdesktop & xfce4-panel &
 xfce4-menu-plugin &
 xfsettingsd &
 xfconfd &
 xfwm4 &

vnc连接上之后远程桌面如下:


对于xfce4有个bug,就是在终端中tab键不能自动补齐,解决方法见本人另一篇博客:
http://blog.163.com/thinki_cao/blog/static/83944875201303081111436/

vnc的xfce4配置具体可以参考以下链接:
如何在ubuntu server 环境安装 vnc4server 服务和xfce 图形环境