使用XMing+putty執行linux圖形介面程式

weixin_33806914發表於2018-04-01

歡迎關注大資料和人工智慧技術文章釋出的微信公眾號:清研學堂,在這裡你可以學到夜白(作者筆名)精心整理的筆記,讓我們每天進步一點點,讓優秀成為一種習慣!

起因
接下去的工作要作一些數值模擬,於是到師兄的工作站上開了個帳號。工作站執行的是RHEL4,要說遠端SSH,就算是FTerm也足夠勝任,不過,因為我要用的檢視計算結果的軟體需要使用圖形介面,這一點就比較麻煩了。用VNC,一來耗費資源,二來VNC在win下的表現實在不咋樣。
參考
記起上學期的VLSI設計的計算機實驗,幾十個人從執行Windows XP的PC上,用XShell SSH到實驗中心的執行Solaris的Sun工作站,執行Cadence的工具集,那就是帶GUI的。於是想,是否我也能這麼幹呢?往Debian中文和Ubuntu中文郵件列表投遞了封郵件,提出了這個問題,根據列表上的回覆,再Google了一圈,整理了一下,基本上明白了該怎麼做,細節的問題還是不清楚,於是先做一下再說。
一、原理
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是一個配置簡單而功能強大的開源X Server,可以執行在M$的XP/2003/Vista作業系統下。
Xming的主頁:
http://www.straightrunning.com/XmingNotes/
Xming的SourceForge頁面:
http://sourceforge.net/projects/xming/
從SourceForge下載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$ emacsWarning: Cannot convert string "-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*" to type FontStructWarning: 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,執行的流暢程度還是有不小的差距,尤其是滑鼠的移動,感覺一頓一頓的,縱然是在區域網內,情況也沒有好特別多。

如果出不來,顯示no display
需要安裝以下軟體:
yum install -y xauth
然後退出,再重新登入就可以了。

還可以裝字型檔
yum -y groupinstall fonts

相關文章