1,880 瀏覽數

Linux – SSH + X11 forwarding + X-Deep/32

通常我在管理 Linux 時都會使用到 SSH 直接透過桌機去連接,如果真的非得用到 x-window 時我會使用 VNC(Virtual Network Computing) 來當作遠端的連線,但老實說 VNC(Virtual Network Computing)並不是很安全.

Linux 環境下可以直接用 SSH + X11 forwarding 就可以將直接將視窗應用程式的執行換件轉過來,那 Windows 下也可以嗎?同事說可以的一樣是 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/ .

X-Deep09
下面一一介紹 Linux 對 Linux 的 SSH + X11 forwarding SSH 以及 Linux 對 Windows 的 X11 forwarding + X-Deep/32 .

  • Linux:
    不過如果你的桌機是 Linux 可以很簡單的實現 SSH + X11 forwarding 並不需要其他的程式,方式如下:

    [root@local ~]# ssh -X remote
    

    -X (大寫,Enables X11 forwarding),接下來我們會進入遠端,並將遠端執行的程式在目前螢幕顯示出來。

    [root@remote ~] # xterm &
    

    你可以看到遠端所執行的程式,在 local 端顯示出來。
    或許可能會看到下面的錯誤訊息,需要安裝 xorg-x11-fonts-misc 套件.

    xterm: cannot load font '-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1
    [root@local ~]# yum install xorg-x11-fonts-misc
    

    轉送 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-Deep01
      一開始你可能會找不到設定 X-Deep 32 的設定程式,它一開始就會縮小到 taskbar 的選項裡面,如果沒看到可以點選 "顯示隱藏的圖示"就會找到可以設定 x-Deep32 的位置.
      X-Deep02
      展開 x-Deep32 後選擇 Edit -> X-Server Options
      X-Deep03
      Window Modes:
      選擇 "Window Modes" tab,將 "Multiple Window Mode" 的模式選成 "Multiple MS Window Mode" 並且不要勾選 "Display Root Window" 這一選項.
      X-Deep05

      XDMP:
      切換到 "XDMCP" 將 "X-Deep/32 Local XDM Chooser" 的勾選選項移除掉.
      X-Deep06
      這樣我們就可以將 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 SSH 應用
      X-Deep07

      在 Putty 的 session 選擇你要連接的 Host name ,SSH 預設 port 為 22.載入之後你所有執行的 X-window 程式都會被導入到目前你的 windows 系統上.
      X-Deep08

    但是老實說用了一會就開始後悔了,雖然一般的小程式的顯示都可以轉到 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) 的解決方式會是比較合適的方案.

網友的想法

  1. 自動參照通知: Lniux – 遠端桌面 | Benjr.tw

發表迴響