2010/05/08

使用 xming 從windows 系統登入 Linux 系統

Linux 的 Xwindow 的通訊協定,其中
* X-client 負責程式的運作
* X-Server 負責畫面的顯示
所以要遠端連線到Linux系統,其實就是把Linux的圖形畫面,丟到一台X-Server上面
Linux只要有安裝圖形介面,幾乎就是支援X-Server了,
但是在Windown 上面只能透過,第三方的程式來執行X-Server

Xming 是一個免費且完整的X-Server工具,配合putty(我是都抓開發版)
(可以用pietty有比較好的中文顯示效果),就可以完成很多功能
請先至官網下載 http://sourceforge.net/projects/xming/

你可以直接只抓主程式就可以3
http://downloads.sourceforge.net/project/xming/Xming/6.9.0.31/Xming-6-9-0-31-setup.exe?use_mirror=nchc

http://sourceforge.net/projects/xming/files/Xming-fonts/7.5.0.11/Xming-fonts-7-5-0-11-setup.exe/download
此程式需配合 putty 搭配啟動
如果在Wdinwos安裝完成後,就可以看下面的內容:

(1)確認在Linux上的opensshd 有開啟
我們的作法是先使用 putty 連入 linux sshd server 透過 ssh 發出指令
/usr/bin/gnome-session --display $DISPLAY
這樣就會把X的畫面都給指定的 $DISPLAY 畫面編號

root@mtchang-desktop:~# netstat -tnulp | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2727/sshd
tcp6 0 0 :::22 :::* LISTEN 2727/sshd

(2)確認 XDMCP 服務打開(tcp port 177 open)
* CentOS/Ubuntu 預設是 gdm 程式,可以使用 gdm-restart 或 gdm-safe-restart 來重新載入設定檔.
1. 設定檔在 /etc/gdm/custom.conf (沒有這個檔案請自行建立,重新啟動gdm時就會抓取讀取),預設值放在 /usr/share/gdm/defaults.conf

2. 如果需要將 XDMCP 服務打開需要開啟設定檔加入下列選項:

* 修改 /etc/gdm/custom.conf 加入 (ubuntu通常沒有這個檔案如果沒有請自行建立)
# 這裡有詳細的說明文件
# http://www.gnome.org/projects/gdm/
# 主要的服務程式路徑
[daemon]
RemoteGreeter=/usr/libexec/gdmgreeter
[security]
# gdm 預設值是不允許 root 遠端透過 XDMCP 登入,如果要讓 root 可以遠端登入,請修改為 true
AllowRoot=false
[xdmcp]
# 啟動 xdmcp 服務
Enable=true

* 底下為 centos 版本的 custom.conf 我修改後完整的範例
# You can also run gdm-restart or gdm-safe-restart to cause GDM to restart and
# re-read the new configuration settings. You can also restart GDM by sending
# a HUP or USR1 signal to the daemon. HUP behaves like gdm-restart and causes
# any user session started by GDM to exit immediately while USR1 behaves like
# gdm-safe-restart and will wait until all users log out before restarting GDM.
#
# For full reference documentation see the gnome help browser under
# GNOME|System category. You can also find the docs in HTML form on
# http://www.gnome.org/projects/gdm/
#
# NOTE: Lines that begin with "#" are considered comments.
#
# Have fun!

[daemon]
RemoteGreeter=/usr/libexec/gdmgreeter

[security]

[xdmcp]
Enable=true

[gui]

[greeter]

[chooser]

[debug]

# Note that to disable servers defined in the defaults.conf file (such as
# 0=Standard, you must put a line in this file that says 0=inactive, as
# described in the Configuration section of the GDM documentation.
#
[servers]

# Also note, that if you redefine a [server-foo] section, then GDM will
# use the definition in this file, not the defaults.conf file. It is
# currently not possible to disable a [server-foo] section defined
# in the defaults.conf file.
#

* 執行 gdm-restart 重新啟動 gdm 即可(centos5/rhel5 測試ok)
* ubuntu linux (10.04測試ok) 請使用  service gdm restart 重新啟動 gdm
* 驗證 XDMCP 服務是否打開
[root@mt ~]# netstat -tnulp | grep 177
udp 0 0 0.0.0.0:177 0.0.0.0:* 6226/gdm-binary

* 但是在 ubuntu 10.04 上發生了udp port ipv6 的狀況,如果你的網路只有ipv4那可能就不會通,但是你的網路如果支援 ipv6 還是可以通的.(他有被反應在BUG#3938)
root@mtchang-desktop:/etc/gdm# netstat -tnulp | grep 177
udp6 0 0 :::177 :::* 4488/gdm-binary

(3)如果你在 Windows 上可以透過以安裝好的 Xming 建立一各設定檔,配合 putty 讓windows 自動登入Linux X圖形介面:


啟動:XLaunch程式,進入設定畫面

選取 Xming的顯示方式 One Window ,其他也可以只是我比較喜歡一個視窗就好的方式。

這裡使用 Start a program 的方式透過 putty 的 plink 來呼叫遠端的 X Client. Plink建議抓開發版的, 因為目前 stable 版本的 plink 我用過會有限速的問題.

請修改 start program 填入「/usr/bin/xterm -ls -display $DISPLAY 」 這個只是單純的呼叫 xterm這個 Xwindows 的終端機介面,可以加快顯示的速度.但是如果你喜歡完整的圖形介面可以使用 「/usr/bin/gnome-session --display $DISPLAY」呼叫 gnome 圖形介面,如果不是LAN速度會慢很多.


 下一步繼續
 你可以把你這個設定值儲存起來,下次要登入的時候直接點選設定檔就可以執行,旁邊的打勾可以把密碼一起存起來。
 然後,請等一下因為網路速度的關係會跑一段時間,最後就會跳出這個終端機畫面了。如果你要呼叫其他程式來執行,請看下面範例:以呼叫 gedit文字編輯器當範例:
 gedit 是程式執行檔, 「&」是丟入背景執行,用這樣的方式就可以更有效率的在 windows 上操作 Linux 系統。「gnome-session」是 gnome 的啟動程式。



底下是我的xming設定檔範例檔案:
檔名 config.xlaunch (xlaunch為副檔名),內容如下
其中 PW 為密碼,請自行修改
RemoteHost 為提供的 X-client 機器,請自行修改
DISPLAY 為登入後此X-server 的編號,通常如果你需要開很多X畫面請跳開編號
RemoteUser為登入帳號,請自行修改
<xlaunch clientmode="StartProgram" clientstart="PuTTY" clipboard="true" display="0" program="/usr/bin/xterm -ls -display $DISPLAY" pw="密碼請自行修改" remotehost="遠端主機位置請自行修改" remoteuser="帳號請自行修改" windowmode="Windowed" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.straightrunning.com/XmingNotes" xsi:schemalocation="http://www.straightrunning.com/XmingNotes XLaunch.xsd"></xlaunch>

第二次執行對著這個檔案點選兩下後就可以登入X了....!!!!


(4)如果你在 Linux上可以使用,文字端的測試
* 從​用​戶​端​機​器​啟​動​使​用 X 的​遠​端 X 作​業​階​段​,這​個​指​令​通​過 XDMCP 連​線​到​遠​端​的 X 伺​服​程​式並​且​在​用​戶​端​機​器​的 :1 (第1號螢幕,第0號通常為系統預設)

X :1 -query 192.168.1.100

* 再來是用broadcast的方式,假設你 X Server 已經正常運作,你可以用broadcast方式自動找到目前同 subnet 上面的缺點是,如果有好幾台機器,那先回應的Server就會登入該台。

X :1 -broadcast

* 在 linux 上也有圖形介面的 X-Server
* 請使用 yum or apt-get 安裝 xorg-x11-server-Xnest rdesktop tsclient 這些程式就可以呼叫出來。

yum install xorg-x11-server-Xnest rdesktop tsclient

* 安裝完成後程式在 應用程式 -> 附屬應用程式 -> 終端伺服器用戶端 啟動遠端連線


更多的進階閱讀參考:
* http://www.straightrunning.com/XmingNotes/ 但其實有點不一樣,原理類似啦!
* http://itblog.blogdns.net/index.php?id=93&load=read 這篇也可以參考
但其實找商業版 Xmanager Enterprise 3的來玩玩看,很快就會瞭解 xming 的操作了...


比較完整的Xming下載點:
* http://www.straightrunning.com/XmingNotes/

目前商業化比較好的軟體有 xshell 及 Xmanager 用起來及設定都比較方便
* xshell 在個人及學校為免費 (功能同 putty,但更強大)
* xmanager 好像有三十天的試用限制 (功能同 xming 但更完整)
* 下載:http://www.netsarang.com/download/main.html#online

參考:
http://blog.seateng.cn/archives/2009/12/xmanager-gdm-ipv6.html
http://en.wikipedia.org/wiki/NX_technology
https://bugs.launchpad.net/ubuntu/+source/gdm/+bug/105938

延伸閱讀:
你也可以選擇 xrdp 的方式來作遠端連線
http://blog.jangmt.com/2010/08/windowslinuxxrdp.html

沒有留言: