Linux下的遠程控製—VNC
現在,依靠互聯網大家便可以自由自在地在家中工作了。但是,這在Linux下將如何實現呢?假如想在家中使用“dialup PPP”連接,或者采用租用的虛擬私有網絡(VPN)使用個人電腦或服務器時,該如何做呢?在Linux的操作係統上,利用現有SCO的Tarantella和GraphOn的Bridges,可以運行X-Window和微軟視窗遠程的應用,並且顯示在網頁瀏覽器上。然而,這些專門的應用服務器安裝可以說是耗時、昂貴的。當然,也可以使用XFree86來遠程運行X-Window應用。但X協議需要有適當數量的網絡帶寬,假使想要從Linux係統控製一個Windows視窗操作係統的機器或服務器,X則顯得不能“勝任”。VNC(Virtual Network Computing)的出現給我們提供了一個新的選擇。
何謂VNC軟件
VNC就是一個通過軟件方式實現ATM網絡計算機模式的軟件係統。它是由AT&T開發的一套遠程控製的軟件,在遵循GPL的條款下進行分發,也就是說它是一個開放源代碼的軟件。當網絡中的計算機安裝了相應的VNC 軟件後,就可以在計算機上隨時建立和取消對遠端計算機的管理控製,所以給這個軟件起名為“虛擬網絡計算機”。由於VNC使用的通信協議RFB(Remote Fram Buffers)是一個開放協議,它很快就被很多愛好者移植到各種不同的平台上。現在能夠支持的操作係統包括所有Windows 9x/2000/NT/XP、MacOS 8.5以上的版本,以及大多數的Unix係統,其中也包括Linux。所有不同平台版本的VNC,不管是Server還是Client,都支持VNC的通信協議RFB。這樣就能夠很容易地實現不同平台的相互操作。
VNC是一個開放的源代碼,而且屬於免費的軟件產品,具有在Unix、Linux、微軟視窗上傳送高效能遠程控製台的能力。它在根本上有兩個部分:客戶端應用(VNC Viewer)和服務器端應用(VNC Server)。此服務器對於Unix、微軟Windows視窗及MAC操作係統皆可以使用。可以從一台Linux機器的“VNC Viewer”連接到一台運行VNC服務器的電腦。VNC服務器也提供了Java網頁界麵,可以用來運行遠程應用程序,並且將之輸出顯示在瀏覽器上。
軟件安裝
VNC可以直接由其網站https://www.uk.research. att.com/vnc/download.html進行下載。
目前,Linux的VNC版本為3.3.3,而binary文件名叫做3.3.3rl_x86_linux_2.0.tgz,其中包含了Linux VNC服務器和VNC Viewer兩者。除了Linux操作係統版本,還需要下載所有的平台的VNC版本,如微軟Windows視窗或其它的Unix版本。
當下載了VNC的Linux版本後,可以解壓文件到一個文件夾中,例如/home/vnc,然後複製文件vncserver、 vncpasswd和Xvnc到/usr/bin目錄中。假如想要能夠通過VNC服務器的整合Java界麵遠程控製Linux電腦,也得需去建立一個子目錄/usr/local/vnc/classes。在建立此子目錄之後,複製VNCJava.class文件到此目錄中。其操作的命令如下:
#mkdir -p /usr/local/vnc/classes
#cp classes/* /usr/local/vnc/classes
接下來,要確定“perl script”是否已經安裝到機器中,並且Perl解釋程序是否已定位在/usr/bin/perl/。但如果它沒有存在,必須去改變“vncserver script”的第一行,去對應它實際的位置。一旦完成上述操作,就可以在終端視窗中通過“#vncserver”的命令啟動來“VNC Server”。
在被提問以及設定一組密碼後,會顯示一個信息表示服務已經啟動。在Linux的操作係統上,VNC服務器(VNC Server)程序實際是使用自己的“X Server”。它並不將顯示結果輸出在顯示器上,而是通過網絡顯示在“VNC Viewer”程序上。因為“X Server”預設顯示為0(你的屏幕),VNC將啟動自己的“X Server”在下個有用的端口上(:1)。因為VNC有專用的“X Server”,也有其專門的視窗管理員設定。在VNC的常見問題網頁上,包含如何配置遠程視窗管理員。在預設中,VNC使用“twm”來作為視窗管理員,它是功能相當小的視窗管理員。預設視窗管理者是儲存在一個叫做“xstartup”的文件中。而“xstartup”是在“home”目錄中的“.vnc”隱藏目錄下,見圖1所示。

圖1 X Server與Clint間的交互
“twm”也許是最低限度的要求者,但一般不會在遠程連接之上運行KDE或GNOME。因為這些桌麵環境會消耗相當多的係統資源,因此不太容易在網絡上運行。另外,負擔較輕的Windows管理員如“fvwm2”可從https://www.fvwm.org網站來下載。為了測試VNC Server是否能正常的運行,可以運行“VNC Viewer xxx.xxx.xxx.xxx:1”。“xxx.xxx.xxx.xxx”是電腦的IP地址或名稱。“:1”代表X顯示的數目。假如安裝Java語言的類別,可以通過Netscape瀏覽器或微軟的IE瀏覽器連接到“VNC Server”。並鍵入以下URL: https://xxx.xxx.xxx.xxx:5801,其中xxx.xxx.xxx.xxx是你電腦的IP地址。
服務器端與客戶端
1.VNC Server
和所有的Server/Client相同,VNC Server要正常工作,被遠程控製機器的操作係統和TCP/IP協議棧必須都能正常工作,具有能訪問到的IP地址,並且啟動VNC Server後,才能對它進行遠程控製。下麵我們分別在Windows、Mac OS和Unix平台進行了測試試用。Windows平台下VNC在AT&T劍橋實驗室的主頁上有完整的安裝軟件包下載,其中包括了VNC Server/Viewer。和普通的軟件一樣,執行Setup後,所有必需的文件都會被複製到硬盤,同時也會創建一個程序組。其中有一項“Install VNC Server As Service”能夠把VNC Server加入到Windows 9x/NT/2000/XP的係統服務中,可以在登錄進入係統之前就啟動VNC Server。在控製麵板中的服務控製裏麵啟動VNC Server服務,並且設置一個訪問密碼,Windows的服務器端就準備完畢了。見圖2所示。

Unix下的VNC Server不需要對軟件進行安裝,隻需要在VNC的網頁下載符合使用的Unix版本和硬件結構的二進製可執行文件包。在本地以Root解開,執行Xvnc這個腳本,就會像Windows版本的VNC Server一樣,提示輸入訪問密碼,然後就會進入後台作為一個服務運行。通常還會提問輸入X Server的DESKTOP號,在使用客戶端訪問的時候用到。如果沒有合適的係統二進製可執行文件包,還可以下載源代碼,根據自己的係統做一些調整,編譯好就可以運行了。在Unix下,最常用的GUI結構是基於X-Window協議。見圖3所示。

圖3 X-Window工作方式
2.VNC Viewer(Client)
所有各種平台上的VNC Viewer都是一個很小的執行文件,通常在100KB~200KB之間,可以把它拷貝到軟盤上隨身攜帶。Unix下的VNC Viewer通常會需要X Server的支持,也有在Windows/Phonto等GUI環境下的VNC Viewer,可以根據自己運行環境去選擇合適的客戶端。
在啟動客戶端後,隻需要輸入想遠程控製的機器的IP地址,在VNC Viewer連接上遠端的機器後,輸入訪問密碼,對方機器的桌麵就出現在屏幕上了。如果是Windows/Mac OS的服務器端,看到的就是熟悉的Windows/Mac OS桌麵。如果是Unix類的操作係統,就會看到一個X-Window的界麵。如果X-Window是XFree86的話,默認的窗口管理器會是TWM,可以像在本地一樣對遠端的機器操作。VNC Viewer可以同時支持連接管理多個遠端主機,這樣就可以非常方便地同時控製多台機器。VNC還可以工作在另外一種“被動聯結方式”。這是一個非常有用的功能。在需要連接到一台在防火牆後麵的機器的時候,可以把VNC Viewer開啟,進入Listen模式,讓VNC Server按普通模式相反的方向去聯結VNC Viewer。這樣可以繞過這一障礙,和普通的方式一樣非常方便地去控製遠端的機器。見圖4所示。

圖4 VNC Server在Unix下以X Server工作時結構
“VNC Viewer java applet”載入到瀏覽器中,將會被提示輸入當初所設置的密碼。假如想要遠程控製一台Linux或Windows操作係統的電腦,請牢記這些係統僅隻有預設的顯示。因此,將會使用port 5800來連接到它們。
當對於不同的平台使用多種“GUI Viewer”時,請牢記在預設值中。Viewer啟動使用16位的顏色深度。如果控製係統在局域網上,大概看不見有嚴重的性能降低。然而在互聯網上,過多的色彩的確會造成太重的負擔。如果你要連接到互聯網上,大約隻需要使用8位的色彩即可。例如使用Linux係統的客戶端,可以簡單地發出以下的命令去連接VNC服務器在8位[256]色彩。
#vncviewer xxx.xxx.xxx.xxx:1 -brg233
-bgr233選項是指告知服務器去發送8位真色彩像素格式。前兩位元表示藍色的成分,下三位元表示綠色,其它的三位元表則表示為紅色。
結束語
經過以上介紹,大家已經大致了解VNC的基本狀態。在家裏使用Linux係統,利用VNC去遠程控製服務器或桌麵電腦還是比較容易的。甚至還可以利用它,在“Palm Pilot”或“Windows CE”上使用無線Modem連結到VNC服務器上。
但是,它在實際使用中還存在一些問題。如果被控製端操作係統或者網絡不能正常工作的話,是無法對其進行控製的。這種情況下還得在機器本地進行管理。在我試用過的眾多遠端控製軟件中,VNC是工作效率最高、占用係統資源最小的,而且是惟一一個能夠跨越多種平台的自由軟件。它對於經常要跨越多種平台進行管理維護的專業人員來說是個最好的選擇。
最後更新:2017-10-25 15:34:31