由於在Linux的環境下,圖形介面是以X Server為基礎來進行顯示的,所以當我們以一般command-line模式連入時將會無法看到圖形介面,需要另外在本機啟動X Server,讓主機能將圖形介面送過來。
而X11的資料傳輸是採明碼傳輸的方式,因此比較沒那麼安全,透過SSH進行X11 forwarding的主要目的就是將主機要送過來的圖形介面加密後,透過SSH這通訊協定加密再傳到使用者端並顯示在使用者端的 X Server上,以達到保護資料的作用(這也稱為SSH Tunneling)。大致步驟如下:
*這些都是個人使用經驗,若有還煩請指正!
1.準備好你的SSH軟體(以下皆以PieTTY為例,你也可以用PuTTY)
2.主機上的/etc/ssh/sshd_config裡面至少要有設定: 則是讓你的client端連入主機時,會自動將DISPLAY參數設定成localhost:10。
(不過條件是你的pietty/putty有勾選Enable X11 Forwarding)
修改後請記得重新啟動sshd服務。
3.準備好你的X Server軟體,如:ReflectionX / Xming / VNC Viewer / X-Deep 以下將列舉前三者的使用方式:
個人認為ReflectionX使用最簡單,但缺點就是它不是免費軟體;VNC VIewer可攜性高,但缺點是設定與使用較複雜,因此如果環境設定得宜的話,Xming會是個不錯的選擇!
ReflectionX | |
優點:設定簡單,有截圖功能 | 缺點:需安裝,較吃資源,非免費軟體 |
ReflectionX啟動後不用管他,接著用PieTTY登入主機後輸入以下指令即可:
若登入用的帳號是個人帳號,那麼可以到自己的home資料夾底下修改.bashrc這個環境設定檔, (若你的Shell是csh而不是bash的話,請用 setenv DISPLAY 你的IP:0) 如果你希望ReflectionX在啟動之後能夠縮到右下角的系統列裡(系統時鐘那邊),而不要在下方的工具列占位子的話,請在View裡將"Hide Taskbar Icon on Minimize"這個選項打勾,如圖: |
Xming - (記憶體用量≒15 MB) 載點 | |
優點:記憶體用量相對較小,免費軟體 | 缺點:需安裝,伺服器環境需要額外設定 |
Xming的使用主要有兩種: ●若你主機上的 sshd_config 檔中有設定 X11DisplayOffset 以及 X11UseLocalhost 的話 只要在連線前將你的 PieTTY 切換至 PuTTY 模式: 備註:使用這個方法時,若你的.bashrc中有export DISPLAY...的設定,請將它註解掉。因為 X11UseLocalhost 的設定會讓主機幫你將它設定成localhost。 ●若你的主機沒有設定前述那兩個變數,而你也沒有修改的權限... 在安裝Xming後請在它的啟動捷徑上按下右鍵→內容來加入 -ac 這個參數到啟動參數裡,如下: 警告:請在可信賴的網域下才加入這個參數! PieTTY沒有需要任何需要修改的地方,直接連進主機後輸入export DISPLAY=你的IP:0 即可,倘若先前沒有加入-ac這個參數的話,可能就會看到以下錯誤訊息: Xlib: connection to "你的ip:0.0" refused by server 參考資料:http://www.dbuggr.com/smallwei/resolve-xlib-connection-localhost-0-0-refused-server-error/ 備註-實驗室機器上測試結果:idt - OK / GrADS 2.0.1 - OK / Vis5D 5.1 - OK* / Vis5D+ 1.3.0B -FAILED |
|
VNC Viewer - (記憶體用量≒5 MB) 載點 | |
優點:記憶體用量小,免費軟體,免安裝 | 缺點:設定較為複雜 |
首先用PieTTY連入主機,輸入vncserver啟動VNC服務,此 時應該會看到服務啟動的訊息: New '主機名稱:1 (使用者名稱)' desktop is 主機名稱:1
這裡的1代表的是第一個顯示螢幕,若再次啟動vncserver數字會接續下去。 以上是用VNC Viewer直接連線的方法,並沒有透過SSH加密
若想要用SSH保護連線資料,則得在PieTTY中多一到設定的手續 在Source Port輸入你在本機上想給VNC Viewer用的port(本例中為1234) 一樣回到Session頁面填入主機IP等資訊後連線,連進去後記得先啟動vncserver,
參考資料:http://senkao.pixnet.net/blog/post/23633976-透過ssh通道連結家中
ubuntu主機的vnc-server |
備註:如果你是透過跳板連到主機,有可能會沒有辦法作X11的Forwarding,解決方式是請於連至欲連線之主機時加上-X的參數,如:ssh -X 你的帳號@主機ip 不過這個方法不保證每次都有效就是了。
-X這個選項的意思根據其man page的說明其實指的就是對「不信任(Untrusted)的主機」啟用X Forwarding,因為是「不信任」的主機,所以會套用X11的一些安全性政策,某些不合法的操作會被禁止,相對來說安全一點。與其相對的就是-Y選項,也就是用在你所信賴(Trusted)的主機上,這些連線就不會被 X11 的安全性政策所限制囉,更詳細的資訊可以到說明裡面看,或是直接在 Linux 上執行 man ssh。如果你本身的作業環境就是Linux,那事情更簡單了。以Ubuntu 12.04 / 14.04為例,只要確定被連線的主機上有安裝 openssh-server 這個套件,而且也有 X server,那麼直接從本機的終端機以 ssh 配合 -X 參數連過去就搞定了!如果沒有什麼其他特別設定的話,中間要跳多台電腦也沒問題。