VNC由Olivetti & Oracle研究室所開發,此研究室在1999年併入美國電話電報公司(AT&T)。AT&T於2002年停止了此研究室的運做,並把VNC以GPL發佈。python
由於它是免費的, 以及可用於數量龐大的不一樣操做系統, 它的簡單,可靠,和向後兼容性, 使之進化成爲最爲普遍使用的遠程控制軟件,多平臺的支持對網絡管理員是十分重要的,他使網絡管理員可使用一種工具管理幾乎全部系統。linux
原來的AT&T版本已經再也不使用,由於更多有重大改善的分支版本已經出現, 像是RealVNC, VNC tight 和UltraVNC, 他們具備全面的向後兼容。至少對於基本的遠程控制功能而言。 Real VNC 是當前最活躍和強大的主流應用。vim
VNC原理:緩存
VNC系統由客戶端,服務端和一個協議組成;VNC的服務端目的是分享其所運行機器的屏幕, 服務端被動的容許客戶端控制它。 VNC客戶端(或Viewer) 觀察控***務端,與服務端交互。 VNC 協議 RFB(Remote Frame Buffer 遠程幀緩衝)是一個簡單的協議,傳送服務端的原始圖像到客戶端(一個X,Y 位置上的正方形的點陣數據), 客戶端傳送事件消息到服務端。服務器
服務器發送小方塊的幀緩存給客戶端,在最簡單的狀況,VNC協議使用大量的帶寬, 所以各類各樣的方法被髮明出來減小通信的開支,舉例來講,有各類各樣的編碼方法來決定最有效率的方法來傳送這些點陣方塊;協議容許客戶端和服務端去協議哪一種編碼會被使用, 最簡單的編碼,被大多數客戶端和服務端所支持的是, 從左到右的像素掃描數據的原始編碼, 當原始的滿屏被髮送後,只發送變化的方塊區域。這種編碼在幁間只有小部分屏幕變化的狀況下工做的很是好(像是鼠標鍵在桌面移動的狀況,或在光標處敲擊文字), 不過若是大量的像素同時變化帶寬將會增長的很是高,像是拖動一個窗口或觀看全屏錄像。網絡
linux下兩種桌面環境的簡單介紹:app
KDEide
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的窗口管理器
但我沒有發現有什麼區別。
VNCSERVER的簡單管理:
當一用戶反饋說他不能經過VNC Viewer接入服務器或都管理員強制關閉用戶的遠程桌面鏈接時,管理員能夠這樣來處理(以用戶vnc1爲例):
一、查看/etc/sysconfig/vncservers 配置文件,肯定用戶的"X DISPLAY # ",vnc1用戶的ID號碼爲「2」
二、[root@bogon ~]# vncserver -kill :2 #強制結束進程
Killing Xvnc process ID 3405
三、[root@bogon ~]# vncserver :2 #從新啓動vnc1的vnc服務
添加新用戶具並讓其具備vnc遠程接入功能的配置思路:
一、增長系統用戶及密碼
二、切換到該用戶設置vnc登錄密碼
三、修改/etc/sysconfig/vncservers配置文件
四、從新啓動vncserver服務