Linux VNC遠端控制安裝日記

kidking2010發表於2011-07-12

VNC遠端控制安裝

VNC簡介

網路遙控技術是指由一部計算機(主控端)去控制另一部計算機(被控端),而且當主控端在控制端時,就如同使用者親自坐在被控端前操作一樣,可以執行被控端的應用程式,及使用被控端的系統資源。

VNC(Virtual Network Computing)是一套由AT&T實驗室所開發的可操控遠端的計算機的軟體,其採用了GPL授權條款,任何人都可免費取得該軟體。VNC軟體主要由兩個部分組成:VNC server及VNC viewer。使用者需先將VNC server安裝在被控端的計算機上後,才能在主控端執行VNC viewer控制被控端。

(在中也由一套著名的網路遙控軟體――Symantec公司推出的pcAnywhere。

VNC server與VNC viewer支援多種,如Unix系列(Unix,Linux,Solaris等),windows及MacOS,因此可將VNC server 及VNC viewer分別安裝在不同的作業系統中進行控制。如果目前操作的主控端計算機沒有安裝VNC viewer,也可以透過一般的網頁瀏覽器來控制被控端。

整個VNC執行的流程如下:

(1) VNC客戶端透過瀏覽器或VNC Viewer連線至VNC Server。

(2) VNC Server傳送一對話視窗至客戶端,要求輸入連線密碼,以及存取的VNC Server顯示裝置。

(3) 在客戶端輸入聯機密碼後,VNC Server驗證客戶端是否具有存取許可權。

(4) 若是客戶端透過VNC Server的驗證,客戶端即要求VNC Server顯示桌面環境。

(5) VNC Server透過X Protocol 要求X Server將畫面顯示控制權交由VNC Server負責。

(6) VNC Server將來由 X Server的桌面環境利用VNC通訊協議送至客戶端,並且允許客戶端控制VNC Server的桌面環境及輸入裝置。

////////////************************/////////////////

////////////************************/////////////////

                VNCserver使用

////////////************************/////////////////

////////////************************/////////////////

  在Linux上啟動VNC Server , 執行命令service vncserver start

[root@linux root]# vncserver :1/////////一個序號///////(第一個執行設定一個密碼)       vncserver <display>

  You will require a password to access your desktops.

  Password: ***** 為了不想任何人都可以任意操控此計算機。因此當第 1次啟動VNC server時,會要求設定網路操控的密碼。

  Verify: *****

  New ‘X’ desktop is linux:1 ////////////----一定要記住這一行稍後會用到,終端編號;

  Creating default startup script. /root/.vnc/xstartup

  Starting applications specified in /root/.vnc/xstartup

  Log file is /root/.vnc/linux:1.log

  ///////////////////////////////////注意: vncpasswd 可以更改這個密碼,或者新增密碼

  把vnc客戶端 程式安裝好

  ---客戶端連線---

  在Microsoft Windows上執行VNC Viewer

  直接執行“vncviewer.exe”,系統會出現”Connection details”對話方塊。

  在“Connection details”對話方塊中的“VNC server”文字框中輸入VNC Server的IP地址(或主機名及顯示裝置編號,(請看3。在Linux上啟動VNC server的這一行,New ‘X’ desktop is linux:1 得到此資訊),例如:192.168.0.1:1(冒號後面的1是執行VNC Server生成的顯示裝置編號),單擊“OK”按鈕後,VNC Server即會開始檢查所輸入的資訊,若是資訊錯誤,系統會出現“Failed to connect to server”的錯誤資訊:若是資訊正確,則會接著出現“VNC Authentication”對話方塊。

  若是在“VNC Authentication”對話方塊中輸入的密碼正確,就可以成功地開啟Linux的桌面視窗。

  從瀏覽器遠端遙控。

  啟動VNC Server 後直接開啟瀏覽器,在位址列中輸入被控端的網址或IP地址,並在網址後加上“:5800+顯示編號”的埠號即可操控該計算機。

  例如:http://192.168.1.118.:5801(如果顯示編號為1,一般第一次設定的顯示編號都是1,就用5800+1=5801。)

VNC(Virtual Network Computing)虛擬網路計算工具,本質上來說是一個遠端顯示系統,管理員透過它不僅僅可以在執行程式的本地機上察看桌面環境,而且可以從 Internet上的任何地方察看遠端機器的執行情況,而且它具有跨平臺的特性。 Linux 要使用遠端桌面需要安裝VNC,好在Red Hat Enterprise Linux AS 5.0 已經自帶了VNC,預設也已經安裝了,只要配置一下就可以了。但是Windows客戶端還是要安裝的。


VNCServer 配置:

1. 啟動 VNC Server: 開啟終端執行:vncserver

2. 預設情況下VNC Viewer只能看到 VNC Server的命令列。
要VNC Viewer上可以看到Linux桌面需要做如下設定: 在VNC Viewer所在的機器上,
------------------------圖形化連線設定方法一 /--------------------------------
取消/root/.vnc/xstartup檔案中下面兩行的註釋即可:
unset SESSION_MANAGER exec
/etc/X11/xinit/xinitrc

或:
------------------------圖形化連線設定方法二 /--------------------------------

vncserver預設使用的視窗管理器是twm,這是一個很簡陋的視窗管理器,你可以把你的桌面改成GNOME或KDE。
vi /home/使用者名稱/.vnc/xstartup

  你可以把像上面這樣把"twm &"這一行註釋掉,然後在下面加入一行"gnome-session &",或者是"startkde &",分別啟動GNOME桌面和KDE桌面。

------------------------------------------------------------------------------

3. Linux啟動後自動執行VNCServer

1) 在 系統設定>伺服器設定>服務 中把 vncserver 打勾。

2) 開啟配置檔案/etc/sysconfig/vncservers,去掉下面這行的註釋, ////////////////////圖形化連線設定
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 800x600"
(這裡注意一下,預設系統配置裡有 –nolisten tcp 和 –nohttpd ,
這兩個是阻止Xwindows登陸和HTTP方式VNC登陸的,如果需要圖形介面,那就刪除這部分。)
1表示VNC以桌面1執行,這樣可以啟動root的桌面。

---------------------------多使用者設定示例-----------------------------------
VNCSERVERS="1:user1 2:user2 3:user3"               //序號也是和前面對應的
VNCSERVERARGS[1]="-geometry 1024x768"
VNCSERVERARGS[2]="-geometry 1024x768"
VNCSERVERARGS[3]="-geometry 800x600"
------------------------------------------------------------------------

4. VNC埠 如果需要從外網控制內網的某臺Linux,則需要開啟防火牆相應的埠,並在路由器上進行埠對映。 VNC給瀏覽器的埠是5800+N,給vncviewer的埠是5900+N,N是設定的display號

---------------------Windows 客戶端連線---------------------------------

Windows 客戶端 VNC Viewer 的配置: 1. 從下載
VNC Free Edition for Windows Version 4.1.2 2. 開啟 VNCViewer : 填入VNCServer 的IP:編號(1或2或...) 3. VNCViewer 切換全屏模式:F8


=================================防火牆設定=================================
vi /etc/sysconfig/iptables

  找到下面的語句:

  -A RH-Firewall-1-INPUT -j REJECT ——reject-with icmp-host-prohibited

  在此行之前,加上下面的內容:

  -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的使用者就可以連線到本機。

  然後使用root身份重新啟動防火牆:

  /sbin/service iptables restart
=============================================================================


1.確認VNC是否安裝

預設情況下,Red Hat Enterprise Linux安裝程式會將VNC服務安裝在系統上。

確認是否已經安裝VNC服務及檢視安裝的VNC版本

[root@testdb ~]# rpm -q vnc-server

vnc-server-4.1.2-9.el5

[root@testdb ~]#

若系統沒有安裝,可以到作業系統安裝盤的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的桌面示例如下

[root@testdb ~]# 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

……

基於的VNC客戶程式Web服務TCP埠從5800開始,也是與桌面號相關,對應關係如下

桌面號為“1”  ---- 埠號為5801

桌面號為“2”  ---- 埠號為5802

桌面號為“3”  ---- 埠號為5803

……

基於上面的介紹,如果Linux開啟了防火牆功能,就需要手工開啟相應的埠,以開啟桌面號為“1”相應的埠為例,命令如下

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

[root@testdb ~]# iptables -I INPUT -p tcp --dport 5801 -j ACCEPT

4.測試VNC服務

第一種方法是使用VNC Viewer軟體登陸,操作流程如下

啟動VNC Viewer軟體 --&gt Server輸入“144.194.192.183:1” --&gt 點選“OK” --&gt Password輸入登陸密碼 --&gt 點選“OK”登陸到X-Window圖形桌面環境 --&gt 測試成功

第二種方法是使用Web瀏覽器(如Firefox,IE,Safari)登陸測試,操作流程如下

位址列輸入 --&gt 出現VNC viewer for Java(此工具是使用Java編寫的VNC客戶端程式)介面,同時跳出VNC viewer對話方塊,在Server處輸入“144.194.192.183:1”點選“OK” --&gt Password輸入登陸密碼 --&gt 點選“OK”登陸到X-Window圖形桌面環境 --&gt 測試成功

(注:VNC viewer for Java需要JRE支援,如果頁面無法顯示,表示沒有安裝JRE,可以到這裡下載最新的JRE進行安裝)

5.配置VNC圖形桌面環境為KDE或GNOME桌面環境

如果您是按照我的上面方法進行的配置的,登陸到桌面後效果是非常簡單的,只有一個Shell可供使用,這是為什麼呢?怎麼才能看到可愛並且美麗的KDE或GNOME桌面環境呢?回答如下

之所以那麼的難看,是因為VNC服務預設使用的是twm圖形桌面環境的,可以在VNC的配置檔案xstartup中對其進行修改,先看一下這個配置檔案

[root@testdb ~]# cat /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服務的方法:

[root@testdb ~]# vncserver -kill :1

[root@testdb ~]# vncserver :1

6.配置多個桌面

可以使用如下的方法啟動多個桌面的VNC

vncserver :1

vncserver :2

vncserver :3

……

但是這種手工啟動的方法在伺服器重新啟動之後將失效,因此,下面介紹如何讓系統自動管理多個桌面的VNC,方法是將需要自動管理的資訊新增到/etc/sysconfig/vncservers配置檔案中,先以桌面1為root使用者桌面2為oracle使用者為例進行配置如下:

格式為:VNCSERVERS="桌面號:使用的使用者名稱 桌面號:使用的使用者名稱"

[root@testdb ~]# vi /etc/sysconfig/vncservers

VNCSERVERS="1:root 2:oracle"

VNCSERVERARGS[1]="-geometry 1024x768"

VNCSERVERARGS[2]="-geometry 1024x768"

7.修改VNC訪問的密碼

使用命令vncpasswd對不同使用者的VNC的密碼進行修改,一定要注意,如果配置了不同使用者的VNC需要分別到各自使用者中進行修改,例如在我的這個實驗中,root使用者和oracle使用者需要分別修改,修改過程如下:

[root@testdb ~]# vncpasswd

Password:

Verify:

[root@testdb ~]#

8.啟動和停止VNC服務

1)啟動VNC服務命令

[root@testdb ~]# /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服務命令

[root@testdb ~]# /etc/init.d/vncserver stop

Shutting down VNC server: 1:root 2:oracle                  [  OK  ]

3)重新啟動VNC服務命令

[root@testdb ~]# /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一下)

[root@testdb ~]# chkconfig vncserver on

[root@testdb ~]# chkconfig --list vncserver

vncserver       0:off   1:off   2:on    3:on    4:on    5:on    6:off

終於寫完了,好累,休息,休息一下~~~~~~

-- The End --


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

相關文章