對于習(xí)慣使用命令行的人來說,可以使用終端的方式進(jìn)行訪問,也就是通過telnet, ssh等方法遠(yuǎn)程登錄到linux主機(jī),對其進(jìn)行訪問。至于登錄軟件,既可以使用windows自帶的命令行界面,也可以使用專門的終端軟件,例如putty, secureCRT等。其中putty是免費(fèi)軟件,而secureCRT并不是。 對于習(xí)慣使用圖形界面的人來說,更希望以圖形界面的方式來訪問linux主機(jī)。主要有以下幾種方法:
今天我主要介紹第二種方法。 有很多軟件在windows上實(shí)現(xiàn)了X server的功能,例如Xmanager,Hummingbird Exceed,cygwin X server,以及Xming X Server for Windows。前兩個都是商業(yè)軟件,需要付費(fèi)使用;cygwin和Xming是免費(fèi)軟件。本文主要介紹如何使用cygwin X實(shí)現(xiàn)Linux的遠(yuǎn)程桌面。關(guān)于Xming X server的使用請參見其主頁。 先調(diào)動一下大家的積極性,看看最終的效果圖: [ 背景知識 ] 網(wǎng)絡(luò)上有很多關(guān)于X的背景知識,如果你想對X了解的深入一些,去網(wǎng)上搜索一下吧。 這里是王垠寫的”理解 Xwindow“,介紹了X server, X client, 窗口管理器,桌面環(huán)境相關(guān)的知識,讀一下對理解本文也有幫助。 好了,現(xiàn)在我們開始配置。 [ 安裝cygwin ] Cygwin項目的目的是在windows主機(jī)上提供一個類UNIX的環(huán)境,網(wǎng)絡(luò)也有很多相關(guān)的資料。大家可以看一下這一篇:Cygwin使用指南,這篇文章在網(wǎng)絡(luò)上流行比較廣,作者未知,上面提供的僅是其中一個鏈接。 如果你的計算機(jī)上還沒有cygwin,首先需要安裝它。 這個過程很簡單,先到cygwin的主頁去下載setup.exe,然后使用setup.exe進(jìn)行安裝。在安裝的過程中需要選擇要安裝的組件,此時需要把X server組件選上。 在這里有一個安裝指南,雖然是英文的,不過看抓圖就可以了。 選擇X server組件時,其實(shí)只需要選擇xorg-x11-base,選中它之后,其它相關(guān)組件會自動被選中。 在安裝cygwin時,記得把expect這個軟件裝上,它位于interpreters類別下面。我會在后面的章節(jié)中說明為什么要安裝這個組件。 [ 運(yùn)行cygwin X server] 在運(yùn)行X server前,先假定一下我們的組網(wǎng)。 我們假設(shè)X server運(yùn)行在一臺windows XP計算機(jī)上,此機(jī)器的IP地址是192.168.190.91。 我們的Linux主機(jī)上將運(yùn)行X client程序,它的IP地址是192.168.190.15。 在你的安裝目錄中找到c:\cygwin\usr\X11R6\bin\startxwin.bat (假設(shè)你把cygwin安裝在c:\cygwin目錄),雙擊它就會啟動X server,同時會啟動一個終端(這個終端運(yùn)行在Windows本地),效果如下圖: 現(xiàn)在,我們要允許遠(yuǎn)程的X client對X server進(jìn)行訪問,因此,在終端中輸入下面的命令, xhost + 192.168.190.15 接下來,我們要到X client所在的計算機(jī)上進(jìn)行配置,使用telnet或ssh登錄Linux主機(jī)(192.168.190.15),然后運(yùn)行下面的命令, export DISPLAY=192.168.190.91:0.0 xterm & gvim & 上面第一條命令設(shè)置DISPLAY變量,它表示X客戶端將使用192.168.190.91上的0.0來顯示自己。192.168.190.91是運(yùn)行cygwin X server的Windows計算機(jī)(它的防火墻要打開X server所監(jiān)聽的端口,通常為6000)。 后面兩條命令則在Linux主機(jī)上(192.168.190.15)啟動了兩個程序,一個是xterm,另外一個是gvim,我們發(fā)現(xiàn)這兩個程序啟動后,并沒有顯示在Linux主機(jī)上,相反,它們顯示在了windows主機(jī)上。下圖是執(zhí)行完上述命令的效果圖,我使用putty遠(yuǎn)程登錄到Linux主機(jī)上,然后執(zhí)行上述命令: 用這種方法,你可以在Linux主機(jī)上運(yùn)行任何圖形程序,并把它顯示到windows上。 如果你想把諸如KDE、GNOME這樣的桌面環(huán)境也顯示到windows上,就需要做些調(diào)整。 [ 運(yùn)行桌面環(huán)境 ] 在此我以KDE桌面為例。要把KDE桌面環(huán)境顯示到windows上的X server中,需要更改一下X server的啟動批處理。 首先備份一下c:\cygwin\usr\X11R6\bin\startxwin.bat,然后使用文本編輯器打開此文件,找到下面這行: %RUN% XWin -multiwindow -clipboard -silent-dup-error 去掉”-multiwindow“參數(shù): %RUN% XWin -clipboard -silent-dup-error 我們通常不需要啟動一個xterm窗口,因此找到下面這行: %RUN% xterm -e /usr/bin/bash –l 把它注釋掉: REM %RUN% xterm -e /usr/bin/bash –l 好了,批處理文件改完了。 回想一下上面的操作,在啟動了X server后,我們執(zhí)行了xhost命令來設(shè)置允許哪些計算機(jī)連接到X server,現(xiàn)在我們可以在配置文件中設(shè)置它。打開一個cygwin窗口,輸入下面的命令: echo "192.168.190.15" >> /etc/X0.hosts 上面的命令會在/etc/X0.hosts文件中加入你想允許的X client,你可以在此文件中加入你的X客戶端。因為我們使用的DISPLAY是0,所以在文件/etc/X0.hosts中增加;如果使用DISPLAY 1,則需要修改文件/etc/X1.hosts文件?,F(xiàn)在啟動X server后,192.168.190.15就被自動允許接入了。 現(xiàn)在我們再次雙擊startxwin.bat批處理,執(zhí)行后就會出現(xiàn)一個丑陋的空白窗口,這就是所謂的根窗口。之所以是空白的,是因為現(xiàn)在還沒有運(yùn)行任何窗口管理器。別急,我們使用telnet或ssh遠(yuǎn)程登錄Linux主機(jī),執(zhí)行命令: startkde & 哈哈~~~本文開頭所展示的KDE窗口出來了!??!現(xiàn)在你在KDE中運(yùn)行任何程序,它們都運(yùn)行在Linux主機(jī)上,卻把結(jié)果顯示在Windows主機(jī)上。 [ 創(chuàng)建快捷方式 ] 在上面的操作中,啟動X server后,需要使用telnet或ssh登錄到Linux主機(jī),才能啟動自己想要的X client程序,有沒有更簡單的方法? 現(xiàn)在我們就需要用到expect軟件了。這是一個如此有用的軟件,以至于我忍不住要在這里插一段廣告。 Expect為用戶提供一種機(jī)制,使用戶能夠自動執(zhí)行一些交互式的任務(wù)。例如,通常我們在使用telnet的時候,都需要手動輸入用戶名、密碼才能登錄。而使用Expect,我們就可以實(shí)現(xiàn)全自動的telnet交互,不需用戶干預(yù)。Expect由Don Libes開發(fā),基于TCL內(nèi)核,它的主頁在http://expect./。 廣告時間結(jié)束,我們繼續(xù)。我使用expect編寫了如下的TCL/EXPECT腳本,它可以使用ssh自動登錄到指定Linux主機(jī),然后啟動我們需要的程序。程序如下: #! /bin/expect -f # Change these variable to yours set user {easwy} set host {192.168.190.15} set xserver {192.168.190.91} set password {123456} set program {startkde} set timeout 5 set done 0 spawn ssh "$user@$host" while {!$done} { expect { "*(yes/no)?*" { # If the 1st time run ssh, it will prompt continue or not # answer yes exp_send "yes\n" } "assword*" { # Answer password exp_send "$password\n" } "\$*" { # Exit the loop incr done } "#*" { # Exit the loop incr done } timeout { # Timeout exp_send_user "Login timeout, please check!" } } } # Set DISPLAY environment variable exp_send "export DISPLAY=$xserver:0\n" # Start your program exp_send "nohup $program &\n" expect -regexp {\[[0-9]*\] [0-9]*} exp_send "\n" # Finished 把上面的內(nèi)容保存為一個文件,例如,保存為cygwin的~/login.exp。注意:把腳本起始處的5個變量替換成你自己的,只需要替換大括號中間的內(nèi)容。使用telnet的朋友請自行修改此腳本。 下面我們再改一下c:\cygwin\usr\X11R6\bin\startxwin.bat文件,在此文件的最后增加: REM Start your X client program %CYGWIN_ROOT%\bin\run -p /bin expect -f ~/login.exp 我們使用expect來執(zhí)行剛才保存的~/login.exp。 現(xiàn)在,我們右擊startxwin.bat文件,選擇“發(fā)送到桌面快捷方式”。以后,只要你雙擊此快捷方式,就能立刻在Windows上使用Linux主機(jī)上的程序了。 我們再來看一個有趣的例子。 在上圖中共開了三個終端,它們分別運(yùn)行在不同的主機(jī)上,卻都在Windows主機(jī)上進(jìn)行輸入輸出。這就是X window的魅力了,如果你愿意,你還可以把其它Windows及Linux主機(jī)上的程序顯示到這個X server中,正所謂一”橋”飛架南北,天塹變通途。 在本文完成后,經(jīng)網(wǎng)友jiachunyu介紹,才知道有一個名為XWinLogon的軟件,它也是使用cygwin的X server實(shí)現(xiàn)Linux的遠(yuǎn)程桌面。相比之下,它的安裝和使用都簡單了很多。這個軟件的主頁在:http:///projects/xwinlogon/ 或者 http://www./visual-c++/xwinlogon/ 有興趣可以試一下。 需要說明的是,XWinLogon中包含了部分cygwin的軟件包,如果你安裝了cygwin,則不能安裝此軟件(我沒有試過,在作者主頁這樣說明)。 [參考文檔]
原創(chuàng)文章,許可方式見頁尾,轉(zhuǎn)載請注明:轉(zhuǎn)載自Easwy的博客 [ http:///blog/ ] 本文鏈接地址: http:///blog/archives/linux-remote-desktop-via-cygwin-x-server/ Post Footer automatically generated by wp-posturl plugin for wordpress. 相關(guān)文章
|
|