標籤:
Xming + PuTTY 在Windows下遠程Linux主機
一、原理
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程式。
主機上需要的配置:
#vi /etc/ssh/sshd_config
取消這一行的注釋——如果沒有這一行則手動添加之:
X11Forwrding yes
這樣配置的作用就是允許SSH的X轉寄。其實本質上說,這樣做是有一定安全風險的,SSH並不能絕對的保證你資料的安全性,不過,一般情況下,這也夠了。
二、安裝Xming
需要在本地Windows上運行一個X Server。選擇有很多:Cygwin下的X Server恐怕是最著名的,但是為了這麼一個小小的事情去安裝一個“相對巨大”的Cygwin,似乎有些誇張;除了Cygwin,還有兩個著名的商業軟體可以選用,Xwin32和Xmanager,上學期IC實驗用的就是Xmanager,感覺很流暢很好用,不過,雖然Xmanager可以試用,但是終究還是商業軟體;還有一個選擇,就是這裡要講的,開源軟體Xming。
下載Xming-setup.exe(最新的版本是6.9.0.31),在本地安裝。第一次運行時使用開始菜單裡面的XLaunch來啟動,產生一個初始的設定檔。對於簡單的使用來說,不需要任何特殊的配置,一切使用預設即可。Xming的具體配置和使用可以參考Xming的Manual。需要記住的是中標示出的“Display number”中的數字,此處使用預設的0。
啟動完成後,在托盤區會出現一個“X”形狀的表徵圖,這表示Xming已經在運行了,將滑鼠移至上方上去,能看到當前使用的“Display number”。
三、配置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”)。
然後串連登入遠程主機,看上去一切正常的樣子。
四、問題及解決之道
於是試著運行一下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,啟動並執行流暢程度還是有不小的差距,尤其是滑鼠的移動,感覺一頓一頓的,縱然是在區域網路內,情況也沒有好特別多。
PuTTY + Xming 遠程使用 Linux GUI By zw1840 on October 28, 2008 10:01 AM | No Comments | No TrackBacks
在家裡的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 http://www.straightrunning.com/XmingNotes/ 【4】PuTTY http://www.chiark.greenend.org.uk/~sgtatham/putty/ 【5】Putty + Xming 方便的遠程Linux GUIhttp://cluno.blogspot.com/2007/04/putty-xming-linux-gui.html 【6】Xming + PuTTY 在Windows下遠程Linux主機使用圖形介面的程式
http://hi.baidu.com/mooncold/blog/item/8e0dfddc4f29a3a4cd11663a.html Tags:
No TrackBacks
TrackBack URL: http://www.zw1840.com/mt/mt-tb.cgi/8
Leave a commentSign in to comment.
Xming + PuTTY 在Windows下遠程Linux主機