Linux下Vnc遠端桌面Server配置教程
http://www.aiezu.com/Article/Linux_Vnc_Server_conf.aspx
用VNC實作遠端桌面共享(支援Windows, Linux,...)
http://easwy.com/blog/archives/linux-remote-desktop-by-vnc/
# [ 原理 ]#
#--------------------------------------------
VNC,全稱為Virtual Network Computing,使用 RFB(Remote FrameBuffer,遠端幀緩沖)
協定來實作遠端控制另外一台計算機。把鍵盤、滑鼠動作發送到遠端計算機,并把遠端計算機的螢幕發回到本地
VNC技術與平台無關,VNC Viewer可以和VNC Server在不同的作業系統上
VNC幾乎支援所有的作業系統,也支援Java,甚至可以通過支援Java的浏覽器來通路VNC Server
多個 VNC 用戶端可以同時連接配接到一個 VNC Server
顯示編号(display number)來區分,每個vncserver服務監聽3個端口,分别是:
5800+顯示編号: VNC的httpd監聽端口,如果VNC用戶端為IE,Firefox等非vncviewer時必須開放。
5900+顯示編号: VNC服務端與用戶端通信的真正端口,必須無條件開放。
6000+顯示編号: X監聽端口,可選。
首先需要配置 VNC 密碼,密碼在使用用戶端連接配接伺服器時使用
注意:VNC 密碼儲存在使用者的主目錄中,每個使用者都可以設定自己的密碼
是以,請使用你的使用者名(盡量不要使用root)運作下列指令:
在啟動VNC server時,需要為 server指定一個display參數
可以把display了解為一個桌面,每個使用者都可以有自己的桌面,在系統中,display号不能重複
VNC server監聽的端口從5801開始,display :1的監聽5801,display :2監聽5802,以此類推
#
# [ /etc/sysconfig/vncservers ]# {{{
顯示編号、開放的端口分别由
/etc/sysconfig/vncservers 檔案中 VNCSERVERS 和 VNCSERVERARGS 控制
VNCSERVERS的設定方式為
VNCSERVERS="顯示編号1:使用者名1 …",如:VNCSERVERS="1:root 2:aiezu"
VNCSERVERARGS 設定方式為
VNCSERVERARGS[顯示編号1]="參數一 參數值一 參數二 參數值二 ……"
如VNCSERVERARGS[2]="-geometry 800x600 -nohttpd"
VNCSERVERARGS的詳細參數有:
-geometry 桌面分辨率,預設1024x768;
-nohttpd 不監聽HTTP端口(58xx端口);
-nolisten tcp 不監聽X端口(60xx端口);
-localhost 隻允許從本機通路;
-AlwaysShared 預設隻同時允許一個vncviewer連接配接,此參數允許同時連多個vncviewer;
-SecurityTypes None 登入不需要密碼認證VncAuth預設值,要密碼認證。
# vi /etc/sysconfig/vncserver
VNCSERVERS="1:root 2:oracle"
VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp"
VNCSERVERARGS[2]="-geometry 1024x768 -nolisten tcp"
# [ 設定使用者登入密碼 / 生成使用者配置檔案 ]# {{{
設定VNC使用者密碼:
# XXX 此步不可跳過放在後面操作,否則VNC Server将無法啟動
# su - ink
# vncpasswd
Password:
Verify:
# su - root
Password:
Verify:
# [ 啟動 vncserver ]
# service vncserver start
運作上面指令後,分别會在使用者根目錄($HOME)下的".vnc"檔案夾下生成一系列檔案
其中passwd為vnc使用者密碼檔案,由vncpasswd生成。xstartup為VNC用戶端連接配接時啟動的腳本
啟動VNC server的指令是:
vncserver
# vncserver
New 'localhost.localdomain:1 (root)' desktop is localhost.localdomain:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:1.log
# [ 自定義 xstartup ]#
修改".vnc/xstartup"檔案
vncserver 預設使用的視窗管理器是 twm
編輯這個檔案:.vnc/xstartup
#!/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 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & --可以要可以不要
#twm &
# gnome-session &
重新開機 vncserver 使配置生效
# }}}
# [ 配置防火牆 ]#
必須允許VNC的相關端口(58xx,59xx,60xx)
vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 5900:5903 -j ACCEPT
允許其它機器通路本機的5900到5903端口,這樣,display:1, display:2, display:3 使用者就可以連接配接到本機
我的是 -A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 5801:6003 -j ACCEPT
安裝vnc時,要檢查一下iptables的設定,如果沒有開放vnc端口的通路,是連接配接不上的,而且vnc用戶端會提示 failed connection:操作成功完成!(0)這樣的錯誤提示!
#-------------------------------------------
在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端口
在Linux下使用vncviewer+ssh安全通道連接配接:
與④類似,在linux vnc用戶端shell下運作"ssh -L 5901:localhost:5901 vncserverhost"指令
輸入使用者名密碼。即完成通過shh安全通道,将遠端的5901端口轉發到本機的5901端口
然後在shell下運作"vncviewer 127.0.0.1:1"指令即可以連接配接到遠端的VNC Server
#
檢視VNC正在運作的顯示編号端口号?
答:在Linux指令提示符下執行"netstat -tlup|grep vnc",即可以檢視到端口号,端口号後兩位即顯示編号
如何關閉指定的顯示編号?
答:vncserver -kill :number 即可以關閉指定的顯示編号和對應的端口号
在通過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視窗即可
<b>如果配置完成後出現能夠通過鍵盤輸入數字,但是不能輸入字元的情況,就要看看你的用戶端的輸入法的設定是否和伺服器端的設定是否一緻。一般兩端都要是英文的!</b>