1、原理
Linux/Unix的X Window具備網絡透明性。X Window系統裏有一個統一的Server來負責各個程序與顯示器、鍵盤和鼠標等輸入輸出設備的交互,每一個有GUI的應用程序都經過網絡協議與 Server進行交互。因此對於任何一個應用程序,本地運行和遠程運行的差異僅僅是X Server的地址不一樣,別的沒有差異。因此在Windows運行一個X Server,就能夠很方便的遠程運行有GUI的Linux應用了。同時,OpenSSH具備X轉發功能,能夠將Linux主機的X程序經過SSH的管道 轉發給客戶端。因而,經過PuTTY到主機,再將接收到的由主機轉發來的X程序的交互交給在本地Windows系統下運行的X Server來管理和顯示,原則上說,這就能夠實現遠程使用Linux的GUI程序。html
主機上須要的配置:
#vi /etc/ssh/sshd_confignode
取消這一行的註釋——若是沒有這一行則手動添加之:
X11Forwrding yeslinux
這樣配置的做用就是容許SSH的X轉發。其實本質上說,這樣作是有必定安全風險的,SSH並不能絕對的保證你數據的安全性,不過,通常狀況下,這也夠了。數據庫
2、安裝Xming
須要在本地Windows上運行一個X Server。選擇有不少:Cygwin下的X Server恐怕是最著名的,可是爲了這麼一個小小的事情去安裝一個「相對巨大」的Cygwin,彷佛有些誇張;除了Cygwin,還有兩個著名的商業軟 件能夠選用,Xwin32和Xmanager,上學期IC實驗用的就是Xmanager,感受很流暢很好用,不過,雖然Xmanager能夠試用,可是終 究仍是商業軟件;還有一個選擇,就是這裏要講的,開源軟件Xming。windows
下載Xming-setup.exe(最新的版本是6.9.0.31),在本地安裝。第一次運行時使用開始菜單裏面的XLaunch來啓動,產生一個初始 的配置文件。對於簡單的使用來講,不須要任何特殊的配置,一切使用默認便可。Xming的具體配置和使用能夠參考Xming的Manual。須要記住的是 下圖中標示出的「Display number」中的數字,此處使用默認的0。安全
啓動完成後,在托盤區會出現一個「X」形狀的圖標,這表示Xming已經在運行了,將鼠標懸停上去,能看到當前使用的「Display number」。bash
3、配置PuTTY
Windows下有不少支持SSH/Telnet等遠程登陸協議的客戶端,好比SecureCRT、XShell、PuTTY等,甚至你們用來登陸BBS灌水用的FTerm都帶有SSH的功能,只不過不如PuTTY這樣的軟件專業和強大罷了。網絡
我用的是著名的免費的PuTTY,相信不少人的選擇也跟我同樣。所以,就再也不贅述PuTTY的配置和使用了。這裏要說的,是添加PuTTY對X轉發的支 持。運行PuTTY,在配置界面,選擇「Connection-SSh-X11」,選中「Enable X11forwarding」,「X display location」中填上上一步中「Display number」中的數字(此處就是「localhost:0」)。ssh
而後鏈接登陸遠程主機,看上去一切正常的樣子。工具
4、問題及解決之道
因而試着運行一下emacs吧!嘿!圖形界面果真出來了,只是,咋看不到文字,全是些方塊啊?
看看終端的輸出信息:
-bash-2.05b$ emacs
Warning: Cannot convert string "-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*" to type FontStruct
Warning: Cannot convert string "-*-helvetica-medium-r-*--*-120-*-*-*-*-iso8859-1" to type FontStruct
哦,原來是Xming沒有相應的字體!
去Xming的主頁查查manual,能夠爲Xming添加Windows的系統字體,也可使用Xming提供的字體。
使用Xming提供的字體是很簡單的,從Xming的SourceForge頁面下載xming-fonts-setup.exe(最新版本是 7.3.0.15),安裝到Xming的安裝路徑下便可。個人Xming安裝路徑是D:\Program\Xming\,則安裝字體以後的字體路徑就是 D:\Program\Xming\fonts\。經測試,這樣安裝字體後,運行emacs字體能正常顯示了。
若是不想安裝字體,天然也可讓Xming使用Windows的系統字體。但是怎麼配置呢?
還記得Linux下是怎麼添加字體的麼?對了,要爲字體生成cache文件,使用的工具就是mkfontscale。
爲此,從Xming的SourceForge頁面下載Xming-tools-and-clients,解壓縮到Xming的安裝路徑。切換到Windows的的cmd(命令提示符),cd到Xming的目錄,執行如下命令:
>mkfontscale C:/WINDOWS/Fonts
>mkfontscale -b -s -l C:/WINDOWS/Fonts #ignore the 'Couldn't...fon' messages
而後編輯|Xming安裝路徑下的font-dirs文件,添加字體路徑:
C:\WINDOWS\Fonts
記住:雖然是在Windows下,注意區分大小寫仍然是個好習慣。
OK!再來試試,嘿,這下子emacs是否是正常多了呢?
小小的Tips:用你的防火牆阻止Xming訪問網絡。由於,這樣的一個X Server本質是不安全的,並且,你並不須要它聯網,由於你只是在本機使用而已。
感覺:Xming整體來講仍是不如Xmanager,運行的流暢程度仍是有不小的差距,尤爲是鼠標的移動,感受一頓一頓的,縱然是在局域網內,狀況也沒有好特別多。
在家裏的PC上用VMWare作了一個Oracle Enterprise Linux虛擬機作數據庫,虛擬機OEL沒啓用圖形界面,所以須要在PC上裝一個X Window Server才能使用GUI。
看Wiki系統地瞭解了一下X Window System。X Window System(常被簡稱爲X11或X),是一套基於X display protocol的windowing system,X GUI環境的功能包括窗口的繪製、移動,以及與鼠標、鍵盤等輸入設備的交互。X 協議當前版本爲MIT在1987年9月制定的11版----這就是X11的來歷,最新版則是2008年9月發佈的X11R7.4。
X採用C/S模型:一個X server 和多個應用程序(client)通訊。server接收client的請求繪製窗口,並未來自鼠標、鍵盤等設備的輸入傳遞給client。
初學X的用戶常常被描述如何遠程使用Linux GUI環境的文檔搞糊塗:Linux主機上的應用程序被稱爲client,而用戶終端計算機被稱爲server,看上去好像說反了。實際上,X是從程序結 構而非用戶或硬件環境的角度來描述的,在用戶終端上工做的X server爲應用程序提供服務,因此被看做server,而Linux主機上的應用程序接受服務,因此被看做client。
X server和client能夠位於同一計算機上,例如在Linux主機上使用KDE等桌面環境就是這種模式。X server也能夠經過同構網絡、異構網絡或Internet與client通訊。
X server與client之間的通訊是不加密的,這個問題能夠經過SSH解決。SSH是Secure Shell的簡稱,SSH能夠看做是通訊被加密壓縮版的telnet。我須要用到SSH的forwarding功能,當X server與client所在計算機都支持SSH協議時,X server與client之間不安全的TCP/IP鏈接能夠轉送到(forwarding)兩者之間創建的SSH鏈接上。
說了一堆概念,如今能夠挽起袖子幹活了。Linux主機(A, IP: 192.168.1.201)和Windows客戶機(B, IP: 192.168.1.101)都已經裝好了,我要作的就是在 B 上安裝一個X server,一個SSH客戶端,在A上啓用SSH的X11 forwarding。
1 安裝配置B上的X server
X server我選擇的是Xming,這是一個免費的windows平臺上的X server。須要安裝兩個組件,主程序和字體
- Xming X server, Xming-6-9-0-31-setup.exe
- Xming Fonts, Xming-fonts-7-3-0-22-setup.exe

運行XLaunch配置Xming X server,將配置保存爲.xlaunch 文件。使用默認設置便可。
Display 表明一套 I/O 設備,包括顯示、鼠標、鍵盤;Display Number 就是這套 I/O 設備的代號;同時 Display Number 還決定了 Xming X server 的 TCP 端口,端口號爲 6000 + Display Number。Linux 主機上的應用程序經過此端口創建與 Xming X server 的鏈接。



將配置保存爲Xming.display.0.xlaunch。雙擊此文件就能啓動X server,系統欄裏多了一個Xming的圖標。
2 安裝配置B上的SSH
SSH客戶端使用PuTTY,PuTTY是freeware+greenware,就一個exe文件。

配置 Session:配置主機IP,鏈接方式爲SSH

Connection\Data:保存鏈接使用的用戶名

Connection\SSH\X11:Enable X11 Forwarding,X display Location 爲 localhost:0,這裏的 0 就是配置 Xming X server 時指定的 Display Number。
保存設置爲 VSERVER01。
3 配置A上的SSH
要容許Linux主機上的SSH X轉發,查看 /etc/ssh/sshd_config 文件,加入如下一行,
X11Forwrding yes
至此配置完成。在B上使用PuTTY鏈接到A,輸入xclock &,能夠看到X server工做的效果了。
參考
【1】X Window System
http://en.wikipedia.org/wiki/X_Window_System
【2】SSH
http://en.wikipedia.org/wiki/Secure_Shell
【3】Xming
【4】PuTTY
【5】Putty + Xming 方便的遠程Linux GUI
TrackBack URL: http://www.zw1840.com/mt/mt-tb.cgi/8