看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連接配接上。
xming是一個在microsoft windows作業系統上運作x window system(也常稱為x11或x x的工作站)的自由軟體,可用于在windows運作linux的程式(需要在本地windows上運作一個x server,即是本程式)。
linux 以及各種unix like的作業系統現在都用基于x window圖形界面。但是由于體積臃腫導緻在linux運作3d遊戲十分困難。但是得益于其接口良好、擴充性和可移植性優秀的特點(重要的是具有網絡透 明性),利用它可以很友善的遠端啟動linux的圖形程式。
說了一堆概念,現在可以挽起袖子幹活了。
linux主機(a, ip: 192.168.1.201)
windows客戶機(b, ip: 192.168.1.101)
現在做的就是在 b 上安裝一個x server,一個ssh用戶端,在a上啟用ssh的x11 forwarding。
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
xming 用opengl展示界面
xming-fonts 标準x字型,部分傳統的x應用的顯示也需要這些字型
xming-mesa 用更慢的mesa展示界面, 有時x轉發會更好
xming-portable-putty 提供x界面轉發ssh程式
xming-tools-and-clients 提供一些x應用專用的工具
1)保證linux server中 /etc/ssh/sshd_config
x11forwarding yes
2)putty中x11 forwarding:
putty configuration-->preffered ssh protocal version->ssh版本是2.
connection-->ssh-->x11-->enable x11 forwarding, x display location填上localhost:0, 下面的協定選擇mit-magic-cookie-1.
3)windows下起linux下的圖形界面
啟動xming,"display number"中的數字, 使用預設的0.
使用putty連接配接linux server,在putty終端下運作
set display=10.160.13.229:0(注意:這裡ip是xming安裝程式所在的主機的ip位址,即:x server的ip位址,這裡就是你的windows的位址,x client是linux 伺服器)
(display 環境變量格式如下hostname: displaynumber.screennumber,我們需要知道,在某些機器上,可能有多個顯示裝置共享使用同一套輸入裝置,例如在一台pc上連接配接 兩台crt顯示器,但是它們隻共享使用一個鍵盤和一個滑鼠。這一組顯示裝置就擁有一個共同的displaynumber,而這組顯示裝置中的每個單獨的設 備則擁有自己單獨的
screennumber。displaynumber和screennumber都是從零開始的數字。這樣,對于我們普通使用者來說, displaynumber、screennumber就都是0。
hostname指xserver所在的主機主機名或者ip位址, 圖形将顯示在這一機器上, 可以是啟動了圖形界面的linux/unix機器, 也可以是安裝了exceed, x-deep/32等windows平台運作的xserver的windows機器.如果host為空, 則表示xserver運作于本機, 并且圖形程式(xclient)使用unix socket方式連接配接到xserver,
而不是tcp方式.
使用tcp方式連接配接時, displaynumber為連接配接的端口減去6000的值, 如果displaynumber為0, 則表示連接配接到6000端口;
使用unix socket方式連接配接時則表示連接配接的unix socket的路徑,如果displaynumber為0, 則表示連接配接到/tmp/.x11-unix/x0 .
creennumber則幾乎總是0. )
然後運作gvim,發現linux下的gvim顯示在你的windows桌面上了。
如果出現:
xlib: connection to "10.160.13.229:0.0" refused by server xlib: no protocol specified
在右下角點選xming server的view log,發現有如下消息
audit: ... xming: client 4 rejected from ip 10.160.23.18
這個10.160.23.18正是linux server的位址
解決辦法:
右鍵桌面上的xming圖示,修改xming的指令,取消權限控制,使用-ac選項:
c:\program files\xming\xming.exe :0 -clipboard -multiwindow -ac
然後啟動xming,發現可以在windows下顯示linux的圖形界面了。