遠程管理之VNC


遠程管理的基本概念

RDP(remote desktop protocol)協議  遠程桌面協議,我們常用的windows操作系統就是的遠程桌面管理就是基於該協議的,更多有關RDP協議的可以查看百度百科 RDP 

telnet  CLI界面下的遠程管理工具,因為其歷史非常悠久,幾乎所有的操作系統都有該工具(telnet在傳送數據時是通過明文傳輸的,沒有加密,所以現在幾乎都不會使用telnet來進行遠程管理了)  telnet

SSH(Secure Shell)協議  CLI界面下的遠程管理工具,幾乎所有的操作系統都有(區別於telnet,SSH在進行數據傳送時會對數據進行加密,所以SSH是比較安全的協議),幾乎所有的類UNIX操作系統都是采用SSH來進行遠程管理(Linux、BSD、Mac OS等)。  SSH

RFB(Remote FrameBuffer)協議  圖形化遠程管理協議,VNC(Virtual Network Computing)就是基於該協議的,上面講的SSH在類UNIX下是CLI界面常用的遠程管理方式,那么在類UNIX操作系統中,同樣存在圖形化的遠程管理工具,VNC就是類UNIX系統下常用的圖形化遠程管理工具  VNC

 

VNC概述 

VNC (Virtual Network Computing)是虛擬網絡計算機的縮寫。VNC 是一款優秀的遠程控制工具軟件,由著名的 AT&T 的歐洲研究實驗室開發的。VNC 是在基於 UNIX 和 Linux操作系統的免費的開源軟件遠程控制能力強大,高效實用,其性能可以和 Windows 或 MAC 中的任何遠程控制軟件媲美。在 Linux 中,VNC 包括以下四個命令:vncserver,vncviewer,vncpasswd,和 vncconnect。大多數情況下只需要其中的兩個命令:vncserver 和 vncviewer。目前,原來的AT&T版本已經不再使用,因為更多有重大改善的分支版本已經出現, 像是RealVNC, VNC tight 和UltraVNC。 Real VNC 是當前最活躍和強大的主流應用。

VNC原理

VNC系統由客戶端,服務端和一個協議組成。VNC的服務端目的是分享其所運行機器的屏幕, 服務端被動的允許客戶端控制它。 VNC客戶端(或Viewer) 觀察控制服務端,與服務端交互。 VNC 協議 Protocol (RFB)是一個簡單的協議,傳送服務端的原始圖像到客戶端(一個X,Y 位置上的正方形的點陣數據), 客戶端傳送事件消息到服務端。

服務器發送小方塊的幀緩存給客戶端,在最簡單的情況,VNC協議使用大量的帶寬,因此各種各樣的方法被發明出來減少通訊的開支,舉例來說,有各種各樣的編碼方法來決定最有效率的方法來傳送這些點陣方塊)

協議允許客戶端和服務端去協議哪種編碼會被使用,最簡單的編碼,被大多數客戶端和服務端所支持的是, 從左到右的像素掃描數據的原始編碼, 當原始的滿屏被發送后,只發送變化的方塊區域。這種編碼在幁間只有小部分屏幕變化的情況下工作的非常好(像是鼠標鍵在桌面移動的情況,或在光標處敲擊文字),不過如果大量的像素同時變化帶寬將會增加的非常高,像是拖動一個窗口或觀看全屏錄像。

VNC默認使用TCP端口5900至5906,而JAVA的VNC客戶端使用5800至5806。一個服務端可以在5500口用“監聽模式”連接一個客戶端,使用監聽模式的一個好處是服務端不需要設置防火牆。

UNIX上的VNC稱為xvnc,同時扮演兩種角色,對X窗口系統的應用程序來說它是X server,對於VNC客戶端來說它是VNC服務器程序。

 

實驗環境

     VNC服務端:

             操作系統:Red Hat Enterprise Linux Server release 5.7 (Tikanga)

             VNC 包括以下四個命令:vncserver,vncviewer,vncpasswd,和 vncconnect。

     VNC客戶端:

             操作系統:Windows 7專業版  64位操作系統

 VNC安裝配置

1、安裝VNC包

[root@localhost /]# cd  /mnt/cdrom/Server

[root@localhost /]# rpm -ivh vnc-server-4.1.2-14.el5_6.6.x86_64.rpm

[root@localhost /]# rpm -ivh vnc-4.1.2-14.el5_6.6.x86_64.rpm

驗證vnc-server包是否安裝成功:

[root@localhost /]# rpm -qa vnc-server

vnc-server-4.1.2-14.el5_6.6

[root@localhost /]#yum install tigervnc-server  另外一種安裝。

2、啟動vncservers 

如果此時不設置VNC用戶密碼,啟動vncserver服務,則會報如下錯誤:root@localhost ~]# service vncserver start      Starting VNC server: 1:root [FAILED]

[root@localhost /]# vncpasswd          #設定當前用戶root登錄VNC的密碼

 Password:

Verify:

[root@linuxidc ~]# vncserver           #每一次啟動VNCSERVER   注意 :多次使用這個命令就會啟動多個端口,最終能啟動多少個端口最終由配置文件的編號決定,假設你啟動了5個端口,配置文件只寫了2個,服務或服務器重啟啟動后只有2個。

 

New 'linuxidc.com:2 (root)' desktop is linuxidc.com:1     #訪問VNC方式用戶名:1  說明是5901

Starting applications specified in /root/.vnc/xstartup

Log file is /root/.vnc/linuxidc.com:1.log

[root@linuxidc ~]# ps -aux |grep vnc   #查看vnc進程  

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ

root      2514  0.1  0.8  47540  7432 pts/0    S    10:56   0:00 Xvnc :1 -desktop linuxidc.com:1 (root) -httpd /usr/share/vnc/classes -auth /root/.Xauthority -geometry 1024x768 -depth 16 -rfbwait 30000 -rfbauth /root/.vnc/passwd -rfbport 5901 -pn

此時已經通過vnc遠端登錄了linux系統,但是此時的桌面只是簡單的界面,如果需要啟用gnome桌面

程序需要通過以下設置:

[root@linuxidc ~]# cd .vnc     #進入到vnc服務的文件夾進行配置啟動腳本

[root@linuxidc .vnc]# ls

linuxidc.com:1.log  linuxidc.com:1.pid  linuxidc.com:2.log  linuxidc.com:2.pid  passwd  xstartup

[root@linuxidc .vnc]# vim xstartup     #修改如下圖

wKiom1joUS3Rpz-2AAJZTh6g2Xo743.jpg 

 修改設置完畢后,需重新啟動系統,否則設置不會生效,或者把所有開啟的VNC遠端桌面進程,終止掉后再重新運行vncserver服務。

 

 先查看vnc服務運行了幾個進程:

[root@linuxidc ~]# vncserver    #第二次啟動vncserver ,啟動了第二個端口  說明兩個都是root啟動的

[root@linuxidc ~]# ps -aux |grep vnc   #查看vnc進程  

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ

root      2514  0.1  0.8  47540  7432 pts/0    S    10:56   0:00 Xvnc :1 -desktop linuxidc.com:1 (root) -httpd /usr/share/vnc/classes -auth /root/.Xauthority -geometry 1024x768 -depth 16 -rfbwait 30000 -rfbauth /root/.vnc/passwd -rfbport 5901 -pn

root      2713  2.0  0.8  47544  7424 pts/0    S    10:58   0:00 Xvnc :2 -desktop linuxidc.com:2 (root) -httpd /usr/share/vnc/classes -auth /root/.Xauthority -geometry 1024x768 -depth 16 -rfbwait 30000 -rfbauth /root/.vnc/passwd -rfbport 5902 

 

通過查看發現運行了2個vnc進程,需要終止這1 個vnc運行進程:

[root@linuxidc ~]# vncserver -kill :1  #關閉第一個vnc進程

Killing Xvnc process ID 2514

[root@linuxidc ~]# vncserver :1    #重啟啟動vncserver 

New 'linuxidc.com:1 (root)' desktop is linuxidc.com:1

Starting applications specified in /root/.vnc/xstartup

Log file is /root/.vnc/linuxidc.com:1.log

 

3、配置多個用戶的vncservers文件   注意: 這個文件需要vncserver啟動才能生成。

修改/etc/sysconfig/vncservers文件,將最后兩行配置信息取消注釋,添加系統賬號。

# The VNCSERVERS variable is a list of display:user pairs.

VNCSERVERS="1:root  2:zzhz"#修改信息

VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp -nohttpd "#修改信息

VNCSERVERARGS[2]="-geometry 1024x768 -nolisten tcp -nohttpd "    #修改信息

 說明:VNCSERVERS 是用來設定可以使用VNC的服務器賬號,可以設定多個,例如上面root、etl,但是中間要用空格隔開。使用VNCVIEWER登錄時,192.168.48.128:1表示是以root賬號登錄,以此類推。

關於參數配置說明:

1:-geometry 表示桌面分辨率,默認為1024x768,所以上面的1024x768也可以不寫。

2:-nohttpd  表示不監聽HTTP端口(58xx)。

3:-nolisten tcp 表示不監聽TCP端口(60xx)

4:-localhost 只運行從本機訪問。

5:AlwaysShared 默認只允許一個VNCVIEWER連接,此參數表示同一個顯示端口允許多用戶同時登錄.

6:-depth  表示色深,參數有8,16,24,32.

7: SecurityTypes None 登錄不需要密碼認證VncAuth默認值,要密碼認證。

4、設置另一賬號VNC用戶密碼

[zzhz@localhost ~]$ vncserver   #啟動zzhz賬號的端口

[root@localhost /]# su - zzhz # 不同賬號生成密碼時,同時也生成一個文件xstartup文件。

[zzhz@localhost ~]$ vncpasswd

Password:

Verify:

[root@localhost ~]# ps -aux | grep vnc       最終能啟動多少個端口最終由配置文件的編號決定
root      2514  0.1  0.8  47540  7432 pts/0    S    10:56   0:00 Xvnc :1 -desktop linuxidc.com:1 (root) -httpd /usr/share/vnc/classes -auth /root/.Xauthority -geometry 1024x768 -depth 16 -rfbwait 30000 -rfbauth /root/.vnc/passwd -rfbport 5901 -pn

root      2713  2.0  0.8  47544  7424 pts/0    S    10:58   0:00 Xvnc :2 -desktop linuxidc.com:2 (root) -httpd /usr/share/vnc/classes -auth /root/.Xauthority -geometry 1024x768 -depth 16 -rfbwait 30000 -rfbauth /root/.vnc/passwd -rfbport 5902 

zzhz      5566  2.0  0.8  47544  7444 pts/0    S    10:58   0:00 Xvnc :3 -desktop -desktop linuxidc.com:3 (zzhz) -httpd /usr/share/vnc/classes -auth /home/zzhz/.Xauthority -geometry 1024x768 -depth 16 -rfbwait 30000 -rfbauth /home/zzhz/.vnc/passwd -rfbport 5902 -pn

[root@localhost ~]# netstat -tnlup | grep X

tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 5515/Xvnc
tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN 5566/Xvnc
tcp 0 0 0.0.0.0:5903 0.0.0.0:* LISTEN 5566/Xvnc 

5、啟動vncserver服務

[root@localhost ~]# service vncserver start #重啟后服務將自動關閉

[root@localhost ~]#chkconfig vncserver on  #開機自動啟動服務

6、配置xstartup文件 (同上圖上配置)

VNC會在用戶根目錄($HOME)下的".vnc"文件夾下生成一系列文件。其中passwd為vnc用戶密碼文件,由vncpasswd生成。其他的都由vnc初次啟動時生成,xstartup為VNC客戶端連接時啟動的腳本。

[zzhz@localhost ~]$ vi /home/etl/.vnc/xstartup# 修改同上。

7、客戶端連接服務器

關於VNC服務使用的端口號與桌面號相關,VNC使用TCP端口從5900開始,對應關系如下 
桌面號為“1” ---- 端口號為5901 
桌面號為“2” ---- 端口號為5902 
桌面號為“3” ---- 端口號為5903 

 

 

8、配置防火牆

如果你不配置防火牆,此時用VNC Viewer連接的話,一般會報:"connect:Connection timed out(10060)"錯誤,如下所示:

 

[root@localhost ~]# iptables -I INPUT -p tcp --dport 5901 -j ACCEPT

[root@localhost ~]# iptables -I INPUT -p tcp --dport 5902 -j ACCEPT

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM