天天看点

VNC服务

一、VNC简单介绍:

1、简介

       VNC (Virtual Network Computing)是虚拟网络计算机的缩写。VNC是一款优秀的远程控制工具软件,由著名的AT&T的欧洲研究实验室开发的。VNC是在基于UNIX和Linux操作系统的免费的开放源码软件,远程控制能力强大,高效实用。 其性能可以和Windows和MAC中的任何远程控制软件媲美。

 ——百度百科

ps:Symantec的pcAnywhere也是优秀的远程软件,windows环境下的。

2、vnc工作流程:

 (1)VNC客户端通过浏览器或VNC Viewer连接至VNC Server。

    (2)VNC Server传送一对话窗口至客户端,要求输入连接密码,以及存取的VNC Server显示装置。

    (3)在客户端输入联机密码后,VNC Server验证客户端是否具有存取权限。

    (4)若是客户端通过VNC Server的验证,客户端即要求VNC Server显示桌面环境。

    (5)VNC Server通过X Protocol 要求X Server将画面显示控制权交由VNC Server负责。

    (6) VNC Server将来由 X Server的桌面环境利用VNC通信协议送至客户端,并且允许客户端控制VNC Server的桌面环境及输入装置。

3、linux下的vnc安装(RHEL6.2):

RHEL6.2中的相关rpm是:

客户端:tigervnc-1.0.90-0.17.20110314svn4359.el6.x86_64.rpm

服务端:tigervnc-server-1.0.90-0.17.20110314svn4359.el6.x86_64.rpm

安装: 

yum install tigervnc 

yum install tigervnc-server

二、VNC服务搭建:

1、启用vnc桌面

[xuke@RHEL6 ~]$ vncserver 

You will require a password to access your desktops. 

Password: 

Verify: 

xauth:    creating new authority file /home/xuke/.Xauthority 

xauth: (stdin):1:    bad display name "RHEL6:3" in "add" command 

New 'RHEL6:3 (xuke)' desktop is RHEL6:3 

Creating default startup script /home/xuke/.vnc/xstartup 

Starting applications specified in /home/xuke/.vnc/xstartup 

Log file is /home/xuke/.vnc/RHEL6:3.log 

[xuke@RHEL6 ~]$ 

2、更改vnc桌面配置文件

[xuke@RHEL6 ~]$vim .vnc/xstartup 

    1 #!/bin/sh 

    2    

    3 [ -r /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n 

    4 export LANG 

    5 export SYSFONT 

    6 vncconfig -iconic & 

    7 unset SESSION_MANAGER 

    8 unset DBUS_SESSION_BUS_ADDRESS 

    …… 

20 if [ -x /etc/X11/xinit/xinitrc ]; then 

21     exec /etc/X11/xinit/xinitrc 

22 fi 

23 if [ -f /etc/X11/xinit/xinitrc ]; then 

24     exec sh /etc/X11/xinit/xinitrc 

25 fi 

26 [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources 

27 xsetroot -solid grey 

28 xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & 

29 #twm & 

30 gnome-session &                                        

   第7行和第21或24行在红帽5版本中默认是被注释掉的,要启用;最后一个gnome-session &是启用gnome的桌面,把默认的twm注释掉,很丑的。

3、修改vncserver配置文件,并重启服务

[xuke@RHEL6 ~]$su root 

[root@RHEL6 xuke]#vim /etc/sysconfig/vncservers 

……         

17    

18    VNCSERVERS="1:root 2:xuke" 

19    VNCSERVERARGS[3]="-geometry 800x600 -nolisten tcp -localhost" 

[root@RHEL6 xuke]#service vncserver restart

第18、19行要启用。

4、vnc客户端连接

windows客户端安装VNC Viewer这个程序可以连接,连接格式:IP:桌面号

linux客户端下可以用vncviewer命令连接,连接格式:IP:桌面号

三、VNC共享桌面配置

1、构建可用的vncserver

   参照第二部分,首先搭建好可用访问的vncserver

2、发布共享的桌面

[xuke@RHEL6 ~]$ x0vncserver --PasswordFile=/home/xuke/.vnc/passwd  --display=:1 --AcceptKeyEvents=off --AcceptPointerEvents=off & 

[1] 5101 

[xuke@RHEL6 ~]$    

Mon Jul    9 18:06:05 2012 

Geometry:        Desktop geometry is set to 1024x768+0+0 

Main:                XTest extension present - version 2.2 

Main:                Listening on port 5900 

[xuke@RHEL6 ~]$

x0vncserver 共享vnc桌面命令

--display=:1 指定共享的桌面号

--PasswordFile指定客户端密码验证文件,除非指定--SecurityTypes=None

--AcceptKeyEvents 是否接受来自客户端的按键和释放事件

--AcceptPointerEvents 是否接受来自客户端的指针事件

3、客户端连接共享

  此时客户端就可以通过vncviewer连接到共享的桌面了。但是,连接时,不要加桌面号,只用输入VNCserver的地址即可。

四、VNC相关常用命令

vncserver

   普通用户也有权限启用vnc桌面,上面就是特意拿普通账号举的例子。

   如果命令后面不跟桌面号(:1),默认从1开始依次往后排。如果桌面号1已经被tom启用,那么下次root将缺省启用桌面2,如果4、5都已经被启用,但是2被关闭,那下次将先启用2,再往后排。 启用的VNC桌面占用端口号为port=(5900+桌面号) 

   选项:  -list 列出当前用户所有VNC桌面号及PROCESS ID 

           -kill <X-display>关闭指定的桌面号

2、更改vnc密码

vncpasswd

   vncserver服务程序没有设置密码将不能运行 

   用户第一次启用VNC桌面时会被要求输入密码 

   更改当前用户的VNC密码 

   生成密码文件,vncpasswd [file]

3、配置和控制vnc服务器

vncconfig

   启用客户端与服务器之间的剪切板支持,红帽6版本~/.vnc/xstartup文件中有vncconfig -iconic &语句,已经启用。 

   vncconfig --display=:1 -disconnect断开现在所有的连接 

   vncconfig --display=:1 -connect host:[port] 反向监听vncviewer

4、客户端访问

viewer

   linux下访问vncserver的命令,格式为:ip:x,其中x为桌面号。 

   访问共享的桌面时,不需要桌面号

五、FAQ

1、端口号问题

   x0vncserver共享桌面的端口号是5900。做实验时,RHEL6中的qemu-kvm把5900的端口占用了,所以一直启用不了共享。杀掉qemu-kvm就OK了。

  由于x0vncserver就用5900这个端口,所以一台服务器只能有一个共享桌面,第一个启用的生效。

2、多用户问题

   /etc/sysconfig/vncservers文件中: 

19    VNCSERVERARGS[3]="-geometry 800x600 -nolisten tcp -localhost"

   如果启用多用户,第18行,可以直接空格再继续同格式的跟在后面,但是第19行的[2],一定要改成第18行启用的用户数加上1,比如上面两个用户,就要写成3,。不然的话,vncserver重启后,最后一个用户的vnc桌面不可用,但是如果以上用户又启用了其他桌面但没写进这个文件,不受影响。具体原因,我也不理解。

3、web访问

   网上都说vnc可以启用web界面,但是,我没做成,希望有高手指点。

4、声明

   由于在网上找了好久没有找到关于VNC共享桌面的资料,于是自己花点时间琢磨了一下,以上都是本人通过有道词典翻译的man手册页,然后经过多次试验得出的结论,有些观点或许跟官方不一致,仅供参考。E文好的去官网吧。

本文转自 freeterman 51CTO博客,原文链接:http://blog.51cto.com/myunix/1103326,如需转载请自行联系原作者

继续阅读