在 Linux 中,VNC 包括以下四个命令:vncserver,vncviewer,vncpasswd,和 vncconnect。大多数情况下用户只需要其中的两个命令:vncserver 和 vncviewer。
我的CentOS服务器是通过SSH连接,而且没有安装图形窗口的,即Headless System。因此我决定使用x11vnc和Xvfb两个轻量级的应用来实现我的需求。其中,x11vnc是一个VNC服务程序,本身就比较轻量级,因此对于只需要运行一两个图形界面窗口程序的轻量级需求就更加贴切了。我们知道,在Linux中显示窗口,首先要创建一个display服务。而Xvfb就是一个轻量级的,不产生实际屏幕输出的虚拟display服务程序。因此整个方案的原理是,Xvfb创建display,x11vnc连上去并转换成vnc协议。
首先,安装必要组件:
代码如下 | 复制代码 |
yum install xorg-x11-xauth xterm libXi libXp libXtst libXtst-devel libXext libXext-devel |
接着安装x11vnc,脚本如下:
代码如下 | 复制代码 |
wget http://softlayer-ams.dl.sourceforge.net/project/libvncserver/x11vnc/0.9.13/x11vnc-0.9.13.tar.gz tar zxf x11vnc-0.9.13.tar.gz cd tar zxf x11vnc-0.9.13 ./configure –prefix=/usr/local/blog.creke.net/x11vnc make make install |
然后我们通过yum来安装Xvfb,脚本如下:
代码如下 | 复制代码 |
yum install Xvfb |
然后通过x11vnc的一条简单的命令就可以很简单地把Xvfb也使用进来了,如下:
/usr/local/x11vnc/bin/x11vnc -rfbport 12345 -passwd 连接密码 -create -forever
运行起来后,用vnc客户端链接服务器12345端口,输入正确的密码就可以看到终端窗口了。而在终端中启动窗口程序,也能够在VNC中直接显示出来了。如果希望在登出SSH后窗口还能用,则可以在screen中运行上面的脚本。如果希望多个人能够同时连进VNC,可以加上“-shared”参数