轉自:http://aiezu.blog.51cto.com/190472/1232657
vnc是Virtual Network Computing(虛拟網絡計算機)的縮寫。VNC是由AT&T的歐洲研究實驗室開發的一款優秀的跨平台遠端桌面控制軟體,支援linux,unix,windows等作業系統跨平台遠端桌面控制。VNC有兩部分組成,分别是:服務端(vncserver)和用戶端(vncviewer)。下面以Linux(VNC服務端)、Windows(VNC用戶端)為平台介紹VNC的安裝、配置和使用。
Linux vnc服務端:
作業系統:Red Hat Enterprise Linux AS 5
核心版本:2.6.18-8.el5
CPU構架:i386 SMP
附件軟體:Red Hat Enterprise Linux AS 5 DVD安裝盤
windows vnc用戶端:
作業系統:Windows Server 2008 Enterprise
浏覽器:Windows Internet Explorer 7
将Red Hat Enterprise Linux AS 5 DVD安裝盤放入DVD光驅,執行下列指令進行安裝:
# mkdir -p /mnt/cdrom
# mount -t auto /dev/cdrom /mnt/cdrom
# cd /mnt/cdrom/Server
# rpm -ivh rpm -ivh vnc-server-4.1.2-9.el5.i386.rpm
# rpm -ivh vnc-4.1.2-9.el5.i386.rpm
(1)VNC的運作機制介紹
在配置VNC前,必須了解VNC的運作機制。Linux下的VNC可以同時啟動多個vncserver,各個vncserver之間用顯示編号(display number)來區分,每個vncserver服務監聽3個端口,它們分别是:
5800+顯示編号: VNC的httpd監聽端口,如果VNC用戶端為IE,Firefox等非vncviewer時必須開放。
5900+顯示編号: VNC服務端與用戶端通信的真正端口,必須無條件開放。
6000+顯示編号: X監聽端口,可選。
顯示編号、開放的端口分别由/etc/sysconfig/vncservers檔案中的VNCSERVERS和VNCSERVERARGS控制。
VNCSERVERS的設定方式為:
VNCSERVERS=”顯示編号1:使用者名1 …”
如:
VNCSERVERS=”1:root 2:aiezu”
VNCSERVERARGS的設定方式為:
VNCSERVERARGS[顯示編号1]=”參數一 參數值一 參數二 參數值二 ……”
VNCSERVERARGS[2]=”-geometry 800×600 -nohttpd”
VNCSERVERARGS的詳細參數有:
-geometry 桌面分辨率,預設1024×768;
-nohttpd 不監聽HTTP端口(58xx端口);
-nolisten tcp 不監聽X端口(60xx端口);
-localhost 隻允許從本機通路;
-AlwaysShared 預設隻同時允許一個vncviewer連接配接,此參數允許同時連多個vncviewer;
-SecurityTypes None 登入不需要密碼認證VncAuth預設值,要密碼認證。
(2)修改/etc/sysconfig/vncserver檔案:
熟悉Linux下VNC的運作機制後,開始正式配置VNC Server。vi /etc/sysconfig/vncserver,添加如下三行:
VNCSERVERS=”1:root 3:aiezu”
VNCSERVERARGS[1]=”-geometry 800×600 -nolisten tcp”
VNCSERVERARGS[3]=”-geometry 1024×768 -nolisten tcp”
本例我們開啟兩個vncserver,分别是root使用者,顯示編号為1和使用者aiezu,顯示編号為3,并且全不開啟X監聽端口60xx。
(3)設定VNC使用者密碼:
接下來設定VNC的密碼,此步驟不可跳過,否則VNC Server将無法啟動,在Linux Shell下執行下列指令:
# su – aiezu
# vncpasswd
Password:
Verify:
# su – root
service vncserver start //啟動vncserver
運作上面指令後,會在使用者根目錄($HOME)下的”.vnc”檔案夾下生成一系列檔案。其中passwd為vnc使用者密碼檔案,由vncpasswd生成。其他的都由vnc初次啟動時生成,xstartup為VNC用戶端連接配接時啟動的腳本。
(4)修改”.vnc/xstartup”檔案:
執行到上面步驟後,VNC Server已經能正常運作。但是預設設定下,客戶連接配接時啟動的是xterm,我們如果想看到桌面,必須将使用者根目錄下的”.vnc/xstartup”檔案中的最後兩行注釋掉,然後根據你安裝的桌面壞境,添加一行”startkde &”或者”gnome-session &”。如下:
#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#xterm -geometry 80×24+10+10 -ls -title “$VNCDESKTOP Desktop” &
#twm &
startkde &
# gnome-session &
配置完各個使用者根目錄下的”.vnc/xstartup”後,執行service vncserver restart 重新啟動vncserver使配置生效。
(5)配置防火牆:
如果Linux啟用了防火牆,必須允許VNC的相關端口(58xx,59xx,60xx)。具體的端口,請參照第2大步驟的①小步驟的VNC運作機制介紹,本例開啟5801,5803,5901,5903端口就可以。在Linux指令提示符下輸入”system-config-securitylevel-tui”啟動防火牆配置工具,點”Customize”,在”Other Port”中輸入”5801:tcp 5803:tcp 5901:tcp 5903:tcp”,然後點”OK”既可。
(1)在windows下使用IE進行遠端控制連接配接:
使用浏覽器連接配接時,服務端的VNCSERVERARGS設定必須沒有”-nohttpd參數”,并且防火牆允許VNC的58xx和59xx端口通過。浏覽器必須安裝了Java支援插件,Java插件下載下傳位址:http://www.java.com/zh_CN/download/manual.jsp
(2)使用在windows下vncviewer遠端控制連接配接:
使用vncviewer進行遠端控制是最簡單方式,伺服器隻需開啟”59xx”端口就可以了。用戶端也無需配置,輕按兩下vncviewer後,在server文本框中輸入vncserver的ip位址和端口即可(本例為:192.168.1.22:5901)。vncviewer綠色版的本地下載下傳位址為:http://www.aiezu.com/uploads/soft/vnc-4_1_2-x86_win32_viewer.exe
(3)在Linux下使用vncviewer進行遠端控制連接配接:
使用vncviewer前必須安裝vnc-4.1.2-9.el5.i386.rpm包,vncviewer的用法為:vncviewer host:顯示編号。
(4)在windows下使用vncviewer+putty.exe通過ssh安全通道連接配接:
打開putty,在左邊的”Category”中依次點”Connection”->”SSH”->”Tunnels”。在”Source Port”文本框中輸入”5901″,”Destination”文本框中輸入”localhost:5901″,點選”Add,添加端口轉發。然後在putty左邊的”Category”下點”Session”,輸入伺服器的IP位址後,點”Open”按鈕,輸入密碼登陸後,既成功啟用了端口轉發。接着在本機打開vncviewer輸入”127.0.0.1:5901″即可成功連接配接到遠端的5901端口。
(5)在Linux下使用vncviewer+ssh安全通道連接配接:
與④類似,在linux vnc用戶端shell下運作”ssh -L 5901:localhost:5901 vncserverhost”指令,輸入使用者名密碼。即完成通過shh安全通道,将遠端的5901端口轉發到本機的5901端口。然後在shell下運作”vncviewer 127.0.0.1:1″指令即可以連接配接到遠端的VNC Server。
上面的五種連接配接方式中,前面三種方式資料都是未加密的形式在網絡中傳輸的,是極為不安全的方式,建議不要采用。
(1)問:為什麼成功連接配接後,沒有顯示桌面,而隻是現實一個Terminal視窗?
答:在未修改使用者根目錄下的”.vnc/xstartup”檔案,xstartup的預設設定即是此情況。請按第2大步的第②小步修改xstartup,然後運作”service vncserver restart”重新啟動vncserver服務即可。
(2)問:如何檢視VNC正在運作的顯示編号端口号?
答:在Linux指令提示符下執行”netstat -tlup|grep vnc”,即可以檢視到端口号,端口号的後兩位即顯示編号。
(3)問:如何關閉指定的顯示編号?
答:vncserver -kill :number 即可以關閉指定的顯示編号和對應的端口号。
(4)問:為何我通過浏覽器連接配接VNC 端口時,浏覽器顯示了一個紅叉。
答:那是因為你的浏覽器沒裝Java插件的緣故,下載下傳Java插件安裝即可。
(5)問:用戶端連接配接時”Connetcion timed out(10060)”是怎麼回事?
答:對于用戶端連接配接時出現”Connetcion timed out(10060)”或者”No route to host:connect”,請檢查防火牆是否開啟了58xx,59xx,vncserver是否正常運作,以及/etc/sysconfig/vncserver檔案配置是否正确。
(6)問:在通過VNC連接配接的圖形界面桌面啟動X應用時出現:”Error: Can’t open display: :0.0″錯誤?
答:請使用”echo $DISPLAY”指令檢視”DISPLAY”壞境變量是否設定為”:顯示編号:0″,如:”:1:0″。如果不是此形式,啟動X應用時會出現此錯誤。此時可以通過”export DISPLAY=:1:0″設定正确的DISPLAY。還有一種可能就是切換了使用者啟動X應用,目前使用者沒有權限使用X視窗,這時傳回到啟用VNC的使用者,運作”xhost +”允許其他使用者通路此X視窗即可。