一、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
Password:
[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相关常用命令
1、启用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文件中:
18 VNCSERVERS="1:root 2:xuke"
19 VNCSERVERARGS[3]="-geometry 800x600 -nolisten tcp -localhost"
如果启用多用户,第18行,可以直接空格再继续同格式的跟在后面,但是第19行的[2],一定要改成第18行启用的用户数加上1,比如上面两个用户,就要写成3,。不然的话,vncserver重启后,最后一个用户的vnc桌面不可用,但是如果以上用户又启用了其他桌面但没写进这个文件,不受影响。具体原因,我也不理解。
3、web访问
网上都说vnc可以启用web界面,但是,我没做成,希望有高手指点。
4、声明
由于在网上找了好久没有找到关于VNC共享桌面的资料,于是自己花点时间琢磨了一下,以上都是本人通过有道词典翻译的man手册页,然后经过多次试验得出的结论,有些观点或许跟官方不一致,仅供参考。E文好的去官网吧。