Linux - SSH + X11 forwarding + X-Deep/32
由
sunchiahome 在 週一, 06/22/2009 - 11:09 發表
通常我在管理 Linux 時都會使用到 SSH 直接透過桌機去連接,如果真的非得用到 x-window 時我會使用 VNC(Virtual Network Computing) 來當作遠端的連線,但老實說 VNC(Virtual Network Computing)並不是很安全.
前幾天看到一個同事採用的是 SSH + X11 forwarding 再加上 x-win32 ,就可以在 windows 的桌機使用 Linux 的 X-window 而且是透過 SSH 的方式連接安全上也不會有太大的問題.但是我上了 x-win32 http://www.starnet.com/ 他並不是免費的.恩!!!雖然可以試用但是有每次連線 30 分鐘的限制.所以我又再找了另外一套 X-Deep/32 http://www.caslab.queensu.ca/LabHelp/XServer/
Linux:
不過如果你的桌機是 Linux 可以很簡單的實現 SSH + X11 forwarding 並不需要其他的程式,方式如下:
[root@local ~] # ssh -X remote |
-X(大寫,Enables X11 forwarding),接下來我們會進入遠端,並將遠端執行的程式在目前螢幕顯示出來。
[root@remote ~] # xterm & |
你可以看到遠端所執行的程式,在 local 端顯示出來。
轉送 X session 預設登入 SSH 時,就可以將 X-Window 執行的畫面傳回本地端.如果不行檢查一下你的 Remote 端 /etc/ssh/sshd_config 中 X11Forwarding 是否設為 yes (OpenSSH 2.X版預設值為 no)
Windows:
但是通常我的遠端桌面是 Windows 所以有其他的解決方案嗎??有的 SSH + X11 forwarding + X-Deep/32 先下載所需的工具,1.x-Deep/32 , 2.SSH這兩隻工具安裝上並沒有什麼難度只要不斷的按下一步即可.
1.x-Deep/32
x-Deep/32 的下載點 http://www.caslab.queensu.ca/LabHelp/XServer/
安裝完成 x-Deep/32 還需要經過設定才可以使用,一開始你會看到 x-Deep/32 要求我們選擇你的哪些網路裝置可以使用這個服務.你會看到的裝置可能會跟我差很多,但是通常我們在一開始可以先選擇讓所有的網路裝置都可以使用 "IP:[ ANY ] accept requests on any local interface"
一開始你可能會找不到設定 X-Deep 32 的設定程式,它一開始就會縮小到 taskbar 的選項裡面,如果沒看到可以點選 "顯示隱藏的圖示"就會找到可以設定 x-Deep32 的位置.
展開 x-Deep32 後選擇 Edit -> X-Server Options
Window Modes:
選擇 "Window Modes" tab,將 "Multiple Window Mode" 的模式選成 "Multiple MS Window Mode" 並且不要勾選 "Display Root Window" 這一選項.
XDMP:
切換到 "XDMCP" 將 "X-Deep/32 Local XDM Chooser" 的勾選選項移除掉.
這樣我們就可以將 Linux 的 X-Window Client 所顯示的畫面顯示到 x-Deep32 的 X-window Server 上面.按下 "OK." X-Deep/32 將會重新啟動 server. 接下來到 SSH 去連接 Linux.
2.SSH
這一隻 SSH 連接程式是我比較常用的 PuTTY (the Telnet and SSH client itself) 下載點: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
在 putty 選項 Under Connection -> SSH -> Tunnels 可以看到這邊的主角 X11 forwarding. 請動 "Enable X11 forwarding" 這一選項並將 "X display location" 設並為 localhost:0 你一定會很好奇為什麼是 localhost:0 請參考:SSH Secure tunnel http://benjr.tw/?q=node/105
在 Putty 的 session 選擇你要連接的 Host name ,SSH 預設 port 為 22.載入之後你所有執行的 X-window 程式都會被導入到目前你的 windows 系統上.
但是老實說用了一會就開始後悔了,雖然一般的小程式的顯示都可以轉到 windows 上但是大多的,比如(#system-config-display) 都是秀出錯誤訊息,
The program 'xconf.py' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadMatch (invalid parameter attributes)'.
(Details: serial 638 error_code 8 request_code 72 minor_code 0)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
加上它的傳輸反應並不是很快速,像我將 Linux 上的 firefox 畫面轉到 Windows 下來用大多的時間都在等待畫面的傳送,所以如果沒有安全上的考慮還是 VNC(Virtual Network Computing) 的解決方式會是比較合適的方案.
【评注】
上面在在有些情况下是不管用的,比如不能开启matlab,因低版本的兼容性不行,而高版本的X-Deep/32 也是收费的。
另一个常用的x11 server :X-win32 在使用centos6.3加matlab2011b时,hist(H,1000)会报错:openGL is installed incorrectly。
而Xming则是一个很好的开源的X11实现,持续更新中,非常不错,matlab一切正常。
有时SSH 登陆后执行xhost + 会报错:
PuTTY X11 proxy: wrong authentication protocol attemptedxhost: unable to open display "localhost:10.0"
此时,
可参考:http://zweije.home.xs4all.nl/xa
uth-6.html
键入命令:xauth list
结果例如:
hostname/unix:12 MIT-MAGIC-COOKIE-1 5195ba0c5b462ba00c0bda2d96c0b8ea
那么应该使用以下显示变量:export DISPLAY=localhost:12.0
其他常用的命令:
xauth -v (查看用于xauth的文件,默认是 /home/nspcluster/.Xauthority)
xauth -b quit (重新生成.Xauthority)
关于ssh的简单介绍:http://benjr.tw/node/105