1. 程式人生 > >Linux系統VNC配置

Linux系統VNC配置

linux系統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 是當前最活躍和強大的主流應用。

RealVNC官方網址 : http://www.realvnc.com/

Tight VNC官方網址: http://www.tightvnc.com/

UltraVNC官方網址 : http://www.uvnc.com/

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服務器程序。


  1. 確認VNC是否安裝
    默認情況下,Red Hat Enterprise Linux安裝程序會將VNC服務安裝在系統上。
    確認是否已經安裝VNC服務及查看安裝的VNC版本
    [[email protected] ~]# rpm -q vnc-server
    vnc-server-4.1.2-9.el5
    [[email protected] ~]#

    若系統沒有安裝,可以到操作系統安裝盤的Server目錄下找到VNC服務的RPM安裝包vnc-server-4.1.2-9.el5.x86_64.rpm,安裝命令如下
    rpm -ivh /mnt/Server/vnc-server-4.1.2-9.el5.x86_64.rpm

    2.啟動VNC服務
    使用vncserver命令啟動VNC服務,命令格式為“vncserver :桌面號”,其中“桌面號”用“數字”的方式表示,每個用戶連個需要占用1個桌面
    啟動編號為1的桌面示例如下
    [[email protected] ~]# vncserver :1

    You will require a password to access your desktops.

    Password:
    Verify:
    xauth: creating new authority file /root/.Xauthority

    New ‘testdb:1 (root)‘ desktop is testdb:1

    Creating default startup script. /root/.vnc/xstartup
    Starting applications specified in /root/.vnc/xstartup
    Log file is /root/.vnc/testdb:1.log

    以上命令執行的過程中,因為是第一次執行,需要輸入密碼,這個密碼被加密保存在用戶主目錄下的.vnc子目錄(/root/.vnc/passwd)中;同時在用戶主目錄下的.vnc子目錄中為用戶自動建立xstartup配置文件(/root/.vnc/xstartup),在每次啟動VND服務時,都會讀取該文件中的配置信息。
    BTW:/root/.vnc/目錄下還有一個“testdb:1.pid”文件,這個文件記錄著啟動VNC後對應後天操作系統的進程號,用於停止VNC服務時準確定位進程號。

    3.VNC服務使用的端口號與桌面號的關系
    VNC服務使用的端口號與桌面號相關,VNC使用TCP端口從5900開始,對應關系如下
    桌面號為“1” ---- 端口號為5901
    桌面號為“2” ---- 端口號為5902
    桌面號為“3” ---- 端口號為5903
    ……
    基於Java的VNC客戶程序Web服務TCP端口從5800開始,也是與桌面號相關,對應關系如下
    桌面號為“1” ---- 端口號為5801
    桌面號為“2” ---- 端口號為5802
    桌面號為“3” ---- 端口號為5803
    ……
    基於上面的介紹,如果Linux開啟了防火墻功能,就需要手工開啟相應的端口,以開啟桌面號為“1”相應的端口為例,命令如下
    [[email protected] ~]# iptables -I INPUT -p tcp --dport 5901 -j ACCEPT
    [[email protected] ~]# iptables -I INPUT -p tcp --dport 5801 -j ACCEPT

    4.測試VNC服務
    第一種方法是使用VNC Viewer軟件登陸測試,操作流程如下
    啟動VNC Viewer軟件 --> Server輸入“144.194.192.183:1” --> 點擊“OK” --> Password輸入登陸密碼 --> 點擊“OK”登陸到X-Window圖形桌面環境 --> 測試成功
    第二種方法是使用Web瀏覽器(如Firefox,IE,Safari)登陸測試,操作流程如下
    地址欄輸入http://144.194.192.183:5801/ --> 出現VNC viewer for Java(此工具是使用Java編寫的VNC客戶端程序)界面,同時跳出VNC viewer對話框,在Server處輸入“144.194.192.183:1”點擊“OK” --> Password輸入登陸密碼 --> 點擊“OK”登陸到X-Window圖形桌面環境 --> 測試成功
    (註:VNC viewer for Java需要JRE支持,如果頁面無法顯示,表示沒有安裝JRE,可以到http://java.sun.com/javase/downloads/index_jdk5.jsp這裏下載最新的JRE進行安裝)

    5.配置VNC圖形桌面環境為KDE或GNOME桌面環境
    如果您是按照我的上面方法進行的配置的,登陸到桌面後效果是非常簡單的,只有一個Shell可供使用,這是為什麽呢?怎麽才能看到可愛並且美麗的KDE或GNOME桌面環境呢?回答如下
    之所以那麽的難看,是因為VNC服務默認使用的是twm圖形桌面環境的,可以在VNC的配置文件xstartup中對其進行修改,先看一下這個配置文件
    [[email protected] ~]# vi /root/.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 &

    將這個xstartup文件的最後一行修改為“startkde &”,再重新啟動vncserver服務後就可以登陸到KDE桌面環境
    將這個xstartup文件的最後一行修改為“gnome-session &”,再重新啟動vncserver服務後就可以登陸到GNOME桌面環境

    重新啟動vncserver服務的方法:
    [[email protected] ~]# vncserver -kill :1
    [[email protected] ~]# vncserver :1

    6.配置多個桌面
    可以使用如下的方法啟動多個桌面的VNC
    vncserver :1
    vncserver :2
    vncserver :3
    ……
    但是這種手工啟動的方法在服務器重新啟動之後將失效,因此,下面介紹如何讓系統自動管理多個桌面的VNC,方法是將需要自動管理的信息添加到/etc/sysconfig/vncservers配置文件中,先以桌面1為root用戶桌面2為oracle用戶為例進行配置如下:
    格式為:VNCSERVERS="桌面號:使用的用戶名 桌面號:使用的用戶名"
    [[email protected] ~]# vi /etc/sysconfig/vncservers
    VNCSERVERS="1:root 2:oracle"
    VNCSERVERARGS[1]="-geometry 1024x768"
    VNCSERVERARGS[2]="-geometry 1024x768"

    7.修改VNC訪問的密碼
    使用命令vncpasswd對不同用戶的VNC的密碼進行修改,一定要註意,如果配置了不同用戶的VNC需要分別到各自用戶中進行修改,例如在我的這個實驗中,root用戶和oracle用戶需要分別修改,修改過程如下:
    [[email protected] ~]# vncpasswd
    Password:
    Verify:
    [[email protected] ~]#

    8.啟動和停止VNC服務
    1)啟動VNC服務命令
    [[email protected] ~]# /etc/init.d/vncserver start
    Starting VNC server: 1:root
    New ‘testdb:1 (root)‘ desktop is testdb:1

    Starting applications specified in /root/.vnc/xstartup
    Log file is /root/.vnc/testdb:1.log

    2:oracle
    New ‘testdb:2 (oracle)‘ desktop is testdb:2

    Starting applications specified in /home/oracle/.vnc/xstartup
    Log file is /home/oracle/.vnc/testdb:2.log

    [ OK ]
    2)停止VNC服務命令
    [[email protected] ~]# /etc/init.d/vncserver stop
    Shutting down VNC server: 1:root 2:oracle [ OK ]

    3)重新啟動VNC服務命令
    [[email protected] ~]# /etc/init.d/vncserver restart
    Shutting down VNC server: 1:root 2:oracle [ OK ]
    Starting VNC server: 1:root
    New ‘testdb:1 (root)‘ desktop is testdb:1

    Starting applications specified in /root/.vnc/xstartup
    Log file is /root/.vnc/testdb:1.log

    2:oracle
    New ‘testdb:2 (oracle)‘ desktop is testdb:2

    Starting applications specified in /home/oracle/.vnc/xstartup
    Log file is /home/oracle/.vnc/testdb:2.log

    [ OK ]

    4)設置VNC服務隨系統啟動自動加載
    第一種方法:使用“ntsysv”命令啟動圖形化服務配置程序,在vncserver服務前加上星號,點擊確定,配置完成。
    第二種方法:使用“chkconfig”在命令行模式下進行操作,命令使用如下(預知chkconfig詳細使用方法請自助式man一下)
    [[email protected] ~]# chkconfig vncserver on
    [[email protected] ~]# chkconfig --list vncserver
    vncserver 0:off 1:off 2:on 3:on 4:on 5:on 6:off

    9.小結
    VNC的詳細配置方法到此已經寫完,希望能對大家有幫助。VNC對於遠程調用圖形化界面來說非常的輕巧和便捷,善用之!




Linux系統VNC配置