玩轉(zhuǎn)X
下面的分析是在Ubuntu環(huán)境下進(jìn)行的。
X分為Server和Client,我們可以通過X :1 vt9來啟動一個X Server,然后DISPLAY=:1 gedit你會發(fā)現(xiàn)gedit這個client應(yīng)用會出現(xiàn)在vt9上(通過Ctrl+alt+F9)來切換,當(dāng)然你可以通過DISPLAY=:1 gnome-session在vt9上啟動一個gnome-session,這樣就相當(dāng)于你在本地打開了兩個桌面會話,其實這也可以通過startx -- :1 vt9這一個命令搞定。
如果出現(xiàn)了“X: user not authorized to run the X server, aborting.”這種錯誤,解決的方法是:修改/etc/X11/Xwrapper.config中的控制項:allowed_users=anybody。
如果期望在vt9上為另外一個用戶打開一個X,需要先sudo login user2(使用su user2是不行的),然后再startx -- :1 vt9;或者先ssh user2@localhost,然后再startx -- :1 vt9,總之可以用w命令看一下,如果看不到user2就不行。
很多時候我們ssh到服務(wù)器,可以通過ssh -C -X server_ip來連接服務(wù)器,這樣可以執(zhí)行服務(wù)器上的任何窗口應(yīng)用了。但這么做之前請確保:設(shè)置服務(wù)器端配置文件/etc/ssh/sshd_config中包含"X11Forwarding yes";客戶端配置文件/etc/ssh/ssh_config包含"ForwardX11 yes"。這種情況下,從客戶端ssh到服務(wù)器端后, 服務(wù)端會自動設(shè)置DISPLAY環(huán)境變量, 允許在服務(wù)器端執(zhí)行的圖形程序?qū)D形顯示在客戶端上. 在服務(wù)器上查看環(huán)境變量顯示如下:
DISPLAY=localhost:10.0
在服務(wù)器上用netstat -lnpt可以看到有程序監(jiān)聽了6010端口
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 4827/1
其實就是在服務(wù)器上啟動了一個XServer,偵聽6010端口,所以在服務(wù)器上運(yùn)行窗口應(yīng)用時(就是XClient)可以在在XServer上顯示,而ssh server會進(jìn)行X11Forwarding,這樣窗口就通過ssh隧道來到了客戶端,如果不希望在客戶端當(dāng)前vt上顯示的話,可以在例如vt9上開一個X,然后執(zhí)行DISPLAY=:1 ssh -C -X Server_ip
可以設(shè)置DISPLAY=host:NumA.NumB,現(xiàn)在的系統(tǒng)啟動X時都不再偵聽端口,所以一般都是在本地玩X,如果服務(wù)器的X啟動時打開了端口,那么可以直接把客戶端的XClient放到服務(wù)器上,關(guān)于DISPLAY的詳細(xì)說明,大家可以參考:http://hi.baidu.com/twltnjbntobehiq/item/af145efbaa022a13d7ff8c88
下面再說說常用的一款軟件vnc,一般我們用vncserver在服務(wù)器上啟動一個daemon進(jìn)程偵聽端口,在客戶機(jī)上用vncviewer來連接服務(wù)器上的vncserver,從而開啟一個遠(yuǎn)程X桌面,最新的vnc(5.0.3)為例,在服務(wù)器上安裝vncserver,別用/etc/vnc/下面的腳本啟動vncserver,也別用vncserver-x11啟動usermode的vncserver,這個server會讓vncviewer看到和server完全一樣的桌面,而且會同步控制server,用vncserver命令來啟動,在5.0.3中這種模式被稱作virtual模式,vncviewer連接這種vncserver后,相當(dāng)于新開啟一個X桌面投放到vncviewer上了,啟動vncserver時可以通過添加-geometry和-depth來控制vncviewer看到的窗口大小和色深,這兩個參數(shù)其實是Xvnc的參數(shù),可以通過Xvnc --help來看到更多的參數(shù)。
再補(bǔ)充一點(diǎn),如果X完全掛掉了,需要手動啟動X,那么用sudo start gdm
X分為Server和Client,我們可以通過X :1 vt9來啟動一個X Server,然后DISPLAY=:1 gedit你會發(fā)現(xiàn)gedit這個client應(yīng)用會出現(xiàn)在vt9上(通過Ctrl+alt+F9)來切換,當(dāng)然你可以通過DISPLAY=:1 gnome-session在vt9上啟動一個gnome-session,這樣就相當(dāng)于你在本地打開了兩個桌面會話,其實這也可以通過startx -- :1 vt9這一個命令搞定。
如果出現(xiàn)了“X: user not authorized to run the X server, aborting.”這種錯誤,解決的方法是:修改/etc/X11/Xwrapper.config中的控制項:allowed_users=anybody。
如果期望在vt9上為另外一個用戶打開一個X,需要先sudo login user2(使用su user2是不行的),然后再startx -- :1 vt9;或者先ssh user2@localhost,然后再startx -- :1 vt9,總之可以用w命令看一下,如果看不到user2就不行。
很多時候我們ssh到服務(wù)器,可以通過ssh -C -X server_ip來連接服務(wù)器,這樣可以執(zhí)行服務(wù)器上的任何窗口應(yīng)用了。但這么做之前請確保:設(shè)置服務(wù)器端配置文件/etc/ssh/sshd_config中包含"X11Forwarding yes";客戶端配置文件/etc/ssh/ssh_config包含"ForwardX11 yes"。這種情況下,從客戶端ssh到服務(wù)器端后, 服務(wù)端會自動設(shè)置DISPLAY環(huán)境變量, 允許在服務(wù)器端執(zhí)行的圖形程序?qū)D形顯示在客戶端上. 在服務(wù)器上查看環(huán)境變量顯示如下:
DISPLAY=localhost:10.0
在服務(wù)器上用netstat -lnpt可以看到有程序監(jiān)聽了6010端口
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 4827/1
其實就是在服務(wù)器上啟動了一個XServer,偵聽6010端口,所以在服務(wù)器上運(yùn)行窗口應(yīng)用時(就是XClient)可以在在XServer上顯示,而ssh server會進(jìn)行X11Forwarding,這樣窗口就通過ssh隧道來到了客戶端,如果不希望在客戶端當(dāng)前vt上顯示的話,可以在例如vt9上開一個X,然后執(zhí)行DISPLAY=:1 ssh -C -X Server_ip
可以設(shè)置DISPLAY=host:NumA.NumB,現(xiàn)在的系統(tǒng)啟動X時都不再偵聽端口,所以一般都是在本地玩X,如果服務(wù)器的X啟動時打開了端口,那么可以直接把客戶端的XClient放到服務(wù)器上,關(guān)于DISPLAY的詳細(xì)說明,大家可以參考:http://hi.baidu.com/twltnjbntobehiq/item/af145efbaa022a13d7ff8c88
下面再說說常用的一款軟件vnc,一般我們用vncserver在服務(wù)器上啟動一個daemon進(jìn)程偵聽端口,在客戶機(jī)上用vncviewer來連接服務(wù)器上的vncserver,從而開啟一個遠(yuǎn)程X桌面,最新的vnc(5.0.3)為例,在服務(wù)器上安裝vncserver,別用/etc/vnc/下面的腳本啟動vncserver,也別用vncserver-x11啟動usermode的vncserver,這個server會讓vncviewer看到和server完全一樣的桌面,而且會同步控制server,用vncserver命令來啟動,在5.0.3中這種模式被稱作virtual模式,vncviewer連接這種vncserver后,相當(dāng)于新開啟一個X桌面投放到vncviewer上了,啟動vncserver時可以通過添加-geometry和-depth來控制vncviewer看到的窗口大小和色深,這兩個參數(shù)其實是Xvnc的參數(shù),可以通過Xvnc --help來看到更多的參數(shù)。
再補(bǔ)充一點(diǎn),如果X完全掛掉了,需要手動啟動X,那么用sudo start gdm
posted on 2012-11-26 21:05 so true 閱讀(616) 評論(0) 編輯 收藏 所屬分類: Linux