【主機】vnc 介紹以及安裝時注意的問題

kunlunzhiying發表於2017-04-19
Linux下Vnc遠端桌面Server配置教程
用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  
# vncpasswd  
Password:  
Verify: 
# [ 啟動 vncserver ]
#--------------------------------------------
    # service vncserver start
執行上面命令後,分別會在使用者根目錄($HOME)下的".vnc"資料夾下生成一系列檔案
其中passwd為vnc使用者密碼檔案,由vncpasswd生成。xstartup為VNC客戶端連線時啟動的指令碼
啟動VNC server的命令是:
vncserver <display>
# 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視窗即可
如果配置完成後出現能夠透過鍵盤輸入數字,但是不能輸入字元的情況,就要看看你的客戶端的輸入法的設定是否和伺服器端的設定是否一致。一般兩端都要是英文的!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28211342/viewspace-2137597/,如需轉載,請註明出處,否則將追究法律責任。

相關文章