VNC简介:

   VNC由Olivetti & Oracle研究室所开发,此研究室在1999年并入美国电话电报公司(AT&T)。AT&T于2002年中止了此研究室的运作,并把VNC以GPL发布。

   因为它是免费的, 以及可用于数量庞大的不同操作系统, 它的简单,可靠,和向后兼容性, 使之进化成为最为广泛使用的远程控制软件,多平台的支持对网络管理员是十分重要的,他使网络管理员可以使用一种工具管理几乎所有系统。

   原来的AT&T版本已经不再使用,因为更多有重大改善的分支版本已经出现, 像是RealVNC, VNC tight 和UltraVNC, 他们具有全面的向后兼容。至少对于基本的远程控制功能而言。 Real VNC 是当前最活跃和强大的主流应用。


VNC原理:

   VNC系统由客户端,服务端和一个协议组成;VNC的服务端目的是分享其所运行机器的屏幕, 服务端被动的允许客户端控制它。 VNC客户端(或Viewer) 观察控***务端,与服务端交互。 VNC 协议 RFB(Remote Frame Buffer 远程帧缓冲)是一个简单的协议,传送服务端的原始图像到客户端(一个X,Y 位置上的正方形的点阵数据), 客户端传送事件消息到服务端。

   服务器发送小方块的帧缓存给客户端,在最简单的情况,VNC协议使用大量的带宽, 因此各种各样的方法被发明出来减少通讯的开支,举例来说,有各种各样的编码方法来决定最有效率的方法来传送这些点阵方块;协议允许客户端和服务端去协议哪种编码会被使用, 最简单的编码,被大多数客户端和服务端所支持的是, 从左到右的像素扫描数据的原始编码, 当原始的满屏被发送后,只发送变化的方块区域。这种编码在幁间只有小部分屏幕变化的情况下工作的非常好(像是鼠标键在桌面移动的情况,或在光标处敲击文字), 不过如果大量的像素同时变化带宽将会增加的非常高,像是拖动一个窗口或观看全屏录像。


linux下两种桌面环境的简单介绍:

KDE

   KDE(Kool Desktop Environment)项目始建于1996年10月,相对于GNOME还要早一些。KDE项目是由图形排版工具Lyx的开发者、一位名为Matthias Ettrich的德国人发起的,目的是为满足普通用户也能够通过简单易用的桌面来管理Unix工作站上的各种应用软件以及完成各种任务。

GNOME

   GNOME(GNU   Network   Object   Model   Environment)计划发起于1997年8月,所以,你可以在GNOME的LOGO上见到1997的字样。发起人是Miguel de Icaza和Federico Mena,GNOME计划当初的目标就是完全基于自由软件,构造那种功能完善、操作简单以及界面友好的桌面环境,希望走国际化道路,尽可能多地为各种国家的人所使用。目前,GNOME已经基本上可以成为KDE的替代品。


在Centos 5与Centos 6上与桌面环境相关的套件组名不太一样:

CentOS 5.x:

GNOME: GNOME Desktop Environment

KDE: KDE (K Desktop Environment)

CentOS 6.x:

GNOME: Desktop

KDE: KDE Desktop


实战操作

实验环境:在虚拟机中安装Centos 6.4_x64操作系统,以最小化方式安装,并自定义安装软件选择了“Development tools”和“Server Platform Development”两个开发包组。


(GNOME)桌面环境安装:

[root@bogon ~]# yum -y groupinstall “X Window System”     #这是窗口管理程序,目前系统中已安装了xorg,所以可以不用安装

[root@bogon ~]# yum -y groupinstall Desktop   #这个套件包组有许多包,耐心进行安装;要安装KDE环境时把这里换成相应的套件组名

[root@bogon ~]# startx  #用此命令可以进入GNOME桌面环境


vnc的安装配置:

查找vnc相应的安装包:

[root@bogon ~]# yum list | grep vnc

gtk-vnc.i686 0.3.10-3.el6 base

gtk-vnc.x86_64 0.3.10-3.el6 base

gtk-vnc-devel.i686 0.3.10-3.el6 base

gtk-vnc-devel.x86_64 0.3.10-3.el6 base

gtk-vnc-python.x86_64 0.3.10-3.el6 base

libvncserver.i686 0.9.7-4.el6 base

libvncserver.x86_64 0.9.7-4.el6 base

libvncserver-devel.i686 0.9.7-4.el6 base

libvncserver-devel.x86_64 0.9.7-4.el6 base

tigervnc.x86_64 1.1.0-8.el6_5 updates

tigervnc-server.x86_64 1.1.0-8.el6_5 updates

tigervnc-server-applet.noarch 1.1.0-8.el6_5 updates

tigervnc-server-module.x86_64 1.1.0-8.el6_5 updates

在Centos6中名称已改成tigervnc了,真的很奇怪。

安装tigervnc:

[root@bogon ~]# yum -y install tigervnc.x86_64 tigervnc-server.x86_64

         设置vncserver自动启动:

[root@bogon ~]# chkconfig --list | grep vnc

vncserver 0:off1:off2:off3:off4:off5:off6:off

[root@bogon ~]# chkconfig vncserver on

[root@bogon ~]# chkconfig --list | grep vnc

vncserver 0:off1:off2:on3:on4:on5:on6:off

       增加vnc的测试用户且配置vnc接入密码:

[root@bogon ~]# useradd vnc1

[root@bogon ~]# passwd vnc1

[root@bogon ~]# su vnc1

[vnc1@bogon root]$ vncpasswd

Password:

Verify:

要想root用户也能通过vnc的方式接入服务器,也要为root用户设置vnc密码。

       配置vncservers配置文件:

[root@bogon ~]# vim /etc/sysconfig/vncservers  #在最后增加下行  

VNCSERVERS="1:root 2:vnc1"

       启动vncserver服务:

[root@bogon ~]# service vncserver start

PS:

一些资料上说建议修改用户家目录下的“~/.vnc/xstartup”文件的最后的“twm &”,把这行替换成“gnome-seesion &”,如果是KDE桌面那就修改成“startKDE &”,保存后重新启动vncserver服务。

twm                    启动twm窗口管理器

gnome-seesion          启动gnome的窗口管理器

startKDE               启动KDE的窗口管理器

但我没有发现有什么区别。


最后下载realvnc来进行测试:

######################## Test VNC server ######################
Now, download VNCViewer onto our desktop computer from which we want to access the shared
desktop.
download link: http://www.realvnc.com/download/viewer/
start vnc tool & type
serverip:1 or serverip:2 [1 for root user & 2 for vnc1 user]
example:
192.168.1.200:1 or 192.168.1.200:2 (192.168.1.200 is vncserver Ip)
Enter the password that we created using the vncpasswd command:

VNCSERVER的简单管理:

当一用户反馈说他不能通过VNC Viewer接入服务器或都管理员强制关闭用户的远程桌面连接时,管理员可以这样来处理(以用户vnc1为例):

1、查看/etc/sysconfig/vncservers 配置文件,确定用户的"X DISPLAY # ",vnc1用户的ID号码为“2”

2、[root@bogon ~]# vncserver -kill :2  #强制结束进程

       Killing Xvnc process ID 3405

3、[root@bogon ~]# vncserver :2   #重新启动vnc1的vnc服务


添加新用户具并让其具有vnc远程接入功能的配置思路:

1、增加系统用户及密码

2、切换到该用户设置vnc登陆密码

3、修改/etc/sysconfig/vncservers配置文件

4、重新启动vncserver服务