Last Updated on 2021-06-21 by Clay
當我們使用終端機連線回遠端的伺服器時,一般來說我們是無法開啟任何圖形化界面的程式的。不過實際上,我們是可以通過一些簡單的設定來讓我們可以在本地端的裝置上打開遠端的程式的。
那麼,以下就直接進入正題,簡單地紀錄下我這次測試的心得吧! (註:這次的測試只在 Linux 作業系統下成功)
ssh -Y 的參數
一般我們連接到遠方,都會使用以下這個指令:
ssh user@server_ip
當然,我們若是要在 Terminal 打開圖形化界面的軟體,比方說打開文件管理器 "nautilus":
nautilus
Output:
Unable to init server: Could not connect: Connection refused
(nautilus:18395): Gtk-WARNING **: 23:31:36.729: cannot open display:
本來我一直以為這是沒辦法的、或是要進行些複雜的設定、複雜的套件才辦得到 —— 但其實不是的。
X Window 是存在著網路傳輸協定的。這意味著只要我們能夠正常設定,那我們本機端應該是能正常繪製出圖形化界面軟體的視窗的。
基本上,要繪製圖形化界面的時候,程式會自動去尋找名為 "DISPLAY" 的變數。
我們可以先看看本機端的 "DISPLAY" 變數:
echo $DISPLAY
Output:
:0
可以看到,在本機端上,通常這個變數都是 ":0" 這樣的表示。
那麼,我們再回到我們使用 SSH 指令連線的遠端伺服器,我們也同樣使用以下指令查看:
echo $DISPLAY
Output:
沒錯!基本上,我們什麼也看不到。因為這個環境變數通常都是由我們桌面環境的系統 (比方說 "gdm") 設定的。
那麼,我們又應該如何將遠方伺服器的圖形化界面軟體呈現在本機端呢?
其實,在連線的時候,我們可以將連線的指令加上新的參數:
ssh -Y user@server_ip
連線進來之後,這次我們再來看一下遠端伺服器現在的 "DISPLAY" 變數:
echo $DISPLAY
Output:
localhost:10.0
如果成功印出 "localhost:10.0" 的話,那代表著設定成功!如果沒有印出的話,可以至 /etc/ssh/sshd_config 設定,將 "X11Forwarding" 設定為 "yes"。
既然都設定好了就來測試一下效果吧!這次再次於遠端的終端機上輸入以下指令:
nautilus
Output:
成功了!這樣一來,我們就可以在本地端打開遠端的程式了!不過要注意的是,由於要通過網路傳輸,所以其實軟體的反應便不是那麼即時,算是可惜了一點。