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

圖1 X Server與Clint間的交互
“twm”也許是最低限度的要求者,但一般不會在遠程連接之上運行KDE或GNOME。因為這些桌面環(huán)境會消耗相當多的系統(tǒng)資源,因此不太容易在網(wǎng)絡(luò)上運行。另外,負擔(dān)較輕的Windows管理員如“fvwm2”可從http://www.fvwm.org網(wǎng)站來下載。為了測試VNC Server是否能正常的運行,可以運行“VNC Viewer xxx.xxx.xxx.xxx:1”。“xxx.xxx.xxx.xxx”是電腦的IP地址或名稱。“:1”代表X顯示的數(shù)目。假如安裝Java語言的類別,可以通過Netscape瀏覽器或微軟的IE瀏覽器連接到“VNC Server”。并鍵入以下URL: http://xxx.xxx.xxx.xxx:5801,其中xxx.xxx.xxx.xxx是你電腦的IP地址。
服務(wù)器端與客戶端1.VNC Server
和所有的Server/Client相同,VNC Server要正常工作,被遠程控制機器的操作系統(tǒng)和TCP/IP協(xié)議棧必須都能正常工作,具有能訪問到的IP地址,并且啟動VNC Server后,才能對它進行遠程控制。下面我們分別在Windows、Mac OS和Unix平臺進行了測試試用。Windows平臺下VNC在AT&T劍橋?qū)嶒炇业闹黜撋嫌型暾陌惭b軟件包下載,其中包括了VNC Server/Viewer。和普通的軟件一樣,執(zhí)行Setup后,所有必需的文件都會被復(fù)制到硬盤,同時也會創(chuàng)建一個程序組。其中有一項“Install VNC Server As Service”能夠把VNC Server加入到Windows 9x/NT/2000/XP的系統(tǒng)服務(wù)中,可以在登錄進入系統(tǒng)之前就啟動VNC Server。在控制面板中的服務(wù)控制里面啟動VNC Server服務(wù),并且設(shè)置一個訪問密碼,Windows的服務(wù)器端就準備完畢了。見圖2所示。

Unix下的VNC Server不需要對軟件進行安裝,只需要在VNC的網(wǎng)頁下載符合使用的Unix版本和硬件結(jié)構(gòu)的二進制可執(zhí)行文件包。在本地以Root解開,執(zhí)行Xvnc這個腳本,就會像Windows版本的VNC Server一樣,提示輸入訪問密碼,然后就會進入后臺作為一個服務(wù)運行。通常還會提問輸入X Server的DESKTOP號,在使用客戶端訪問的時候用到。如果沒有合適的系統(tǒng)二進制可執(zhí)行文件包,還可以下載源代碼,根據(jù)自己的系統(tǒng)做一些調(diào)整,編譯好就可以運行了。在Unix下,最常用的GUI結(jié)構(gòu)是基于X-Window協(xié)議。見圖3所示。

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

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