|
對于習(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。前兩個(gè)都是商業(yè)軟件,需要付費(fèi)使用;cygwin和Xming是免費(fèi)軟件。本文主要介紹如何使用cygwin X實(shí)現(xiàn)Linux的遠(yuǎn)程桌面。關(guān)于Xming X server的使用請參見其主頁。 先調(diào)動(dòng)一下大家的積極性,看看最終的效果圖: [ 背景知識 ] 網(wǎng)絡(luò)上有很多關(guān)于X的背景知識,如果你想對X了解的深入一些,去網(wǎng)上搜索一下吧。 這里是王垠寫的”理解 Xwindow“,介紹了X server, X client, 窗口管理器,桌面環(huán)境相關(guān)的知識,讀一下對理解本文也有幫助。 好了,現(xiàn)在我們開始配置。 [ 安裝cygwin ] Cygwin項(xiàng)目的目的是在windows主機(jī)上提供一個(gè)類UNIX的環(huán)境,網(wǎng)絡(luò)也有很多相關(guān)的資料。大家可以看一下這一篇:Cygwin使用指南,這篇文章在網(wǎng)絡(luò)上流行比較廣,作者未知,上面提供的僅是其中一個(gè)鏈接。 如果你的計(jì)算機(jī)上還沒有cygwin,首先需要安裝它。 這個(gè)過程很簡單,先到cygwin的主頁去下載setup.exe,然后使用setup.exe進(jìn)行安裝。在安裝的過程中需要選擇要安裝的組件,此時(shí)需要把X server組件選上。 在這里有一個(gè)安裝指南,雖然是英文的,不過看抓圖就可以了。 選擇X server組件時(shí),其實(shí)只需要選擇xorg-x11-base,選中它之后,其它相關(guān)組件會(huì)自動(dòng)被選中。 在安裝cygwin時(shí),記得把expect這個(gè)軟件裝上,它位于interpreters類別下面。我會(huì)在后面的章節(jié)中說明為什么要安裝這個(gè)組件。 [ 運(yùn)行cygwin X server] 在運(yùn)行X server前,先假定一下我們的組網(wǎng)。 我們假設(shè)X server運(yùn)行在一臺windows XP計(jì)算機(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目錄),雙擊它就會(huì)啟動(dòng)X server,同時(shí)會(huì)啟動(dòng)一個(gè)終端(這個(gè)終端運(yùn)行在Windows本地),效果如下圖: 現(xiàn)在,我們要允許遠(yuǎn)程的X client對X server進(jìn)行訪問,因此,在終端中輸入下面的命令, xhost + 192.168.190.15 接下來,我們要到X client所在的計(jì)算機(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ì)算機(jī)(它的防火墻要打開X server所監(jiān)聽的端口,通常為6000)。 后面兩條命令則在Linux主機(jī)上(192.168.190.15)啟動(dòng)了兩個(gè)程序,一個(gè)是xterm,另外一個(gè)是gvim,我們發(fā)現(xiàn)這兩個(gè)程序啟動(dòng)后,并沒有顯示在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的啟動(dòng)批處理。 首先備份一下c:\cygwin\usr\X11R6\bin\startxwin.bat,然后使用文本編輯器打開此文件,找到下面這行: %RUN% XWin -multiwindow -clipboard -silent-dup-error 去掉”-multiwindow“參數(shù): %RUN% XWin -clipboard -silent-dup-error 我們通常不需要啟動(dòng)一個(gè)xterm窗口,因此找到下面這行: %RUN% xterm -e /usr/bin/bash –l 把它注釋掉: REM %RUN% xterm -e /usr/bin/bash –l 好了,批處理文件改完了。 回想一下上面的操作,在啟動(dòng)了X server后,我們執(zhí)行了xhost命令來設(shè)置允許哪些計(jì)算機(jī)連接到X server,現(xiàn)在我們可以在配置文件中設(shè)置它。打開一個(gè)cygwin窗口,輸入下面的命令: echo "192.168.190.15" >> /etc/X0.hosts 上面的命令會(huì)在/etc/X0.hosts文件中加入你想允許的X client,你可以在此文件中加入你的X客戶端。因?yàn)槲覀兪褂玫腄ISPLAY是0,所以在文件/etc/X0.hosts中增加;如果使用DISPLAY 1,則需要修改文件/etc/X1.hosts文件?,F(xiàn)在啟動(dòng)X server后,192.168.190.15就被自動(dòng)允許接入了。 現(xiàn)在我們再次雙擊startxwin.bat批處理,執(zhí)行后就會(huì)出現(xiàn)一個(gè)丑陋的空白窗口,這就是所謂的根窗口。之所以是空白的,是因?yàn)楝F(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)建快捷方式 ] 在上面的操作中,啟動(dòng)X server后,需要使用telnet或ssh登錄到Linux主機(jī),才能啟動(dòng)自己想要的X client程序,有沒有更簡單的方法? 現(xiàn)在我們就需要用到expect軟件了。這是一個(gè)如此有用的軟件,以至于我忍不住要在這里插一段廣告。 Expect為用戶提供一種機(jī)制,使用戶能夠自動(dòng)執(zhí)行一些交互式的任務(wù)。例如,通常我們在使用telnet的時(shí)候,都需要手動(dòng)輸入用戶名、密碼才能登錄。而使用Expect,我們就可以實(shí)現(xiàn)全自動(dòng)的telnet交互,不需用戶干預(yù)。Expect由Don Libes開發(fā),基于TCL內(nèi)核,它的主頁在http://expect./。 廣告時(shí)間結(jié)束,我們繼續(xù)。我使用expect編寫了如下的TCL/EXPECT腳本,它可以使用ssh自動(dòng)登錄到指定Linux主機(jī),然后啟動(dòng)我們需要的程序。程序如下: #! /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)容保存為一個(gè)文件,例如,保存為cygwin的~/login.exp。注意:把腳本起始處的5個(gè)變量替換成你自己的,只需要替換大括號中間的內(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ī)上的程序了。 我們再來看一個(gè)有趣的例子。 在上圖中共開了三個(gè)終端,它們分別運(yùn)行在不同的主機(jī)上,卻都在Windows主機(jī)上進(jìn)行輸入輸出。這就是X window的魅力了,如果你愿意,你還可以把其它Windows及Linux主機(jī)上的程序顯示到這個(gè)X server中,正所謂一”橋”飛架南北,天塹變通途。 在本文完成后,經(jīng)網(wǎng)友jiachunyu介紹,才知道有一個(gè)名為XWinLogon的軟件,它也是使用cygwin的X server實(shí)現(xiàn)Linux的遠(yuǎn)程桌面。相比之下,它的安裝和使用都簡單了很多。這個(gè)軟件的主頁在: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)文章
|
|
|