前言
如果有設定過在Linux作業系統上面的遠端桌面,如VNC與XRDP等套件,相信一定會遇到下列的問題:
- VNC server的畫面大小需要在建立連線的時候一併設定好
- VNC與XRDP需要編輯相關的啟動shell script,以便連線成立的時候會啟動這個腳本,腳本就包含啟動指定的遠端桌面與其他設定
- 舉例來說,像是VNC需要編輯一個檔案叫做xstartup的shell script,放在當前使用者目錄下面的.vnc目錄
- 如果是XRDP的話,則需要編輯一個叫做.xsession在當前使用者家目錄底下
- 要讓XRDP或是VNC等遠端桌面可以複製貼上的黏貼板功能,需要安裝額外的套件與設定
- VNC與XRDP本身的連線通道間是不具有加密的,因此需要建立SSH tunnel通道加密連線讓其可以在加密連線傳輸下操作遠端主機的桌面
- 因此需要注意,不可不慎,不過有些人不會注意到
從上述來看,雖然VNC與XRDP可以達到遠端桌面連線的要求,不過往往需要花很多的時間在研究,安裝與設定套件上。
本文章,主要是教如何使用X2Go,用這個套件建立加密的遠端桌面連線,並省去許多不必要的麻煩。
前置環境
- 一台主機並安裝有Ubuntu 16.04或是18.04,並可以SSH連線上去的,沒有桌面環境沒有關係,後面的步驟會提到。
- 一個使用者並這個個使用者不是root且已經擁有暫時取得root使用者的權限(sudo)。
- 如果沒有的話,可以參考這個shell script
- 把上面那個shell script下載回來之後,接著將此腳本權限改成755,指令為:chmod 755 ./user-add.sh
- 接著執行:./user-add.sh user_name這樣就可以了
- 別忘了要將上面所新增的使用者指定一個密碼給他,指定密碼的方式為:passwd user_name,接著會提示輸入兩次密碼,兩次密碼都成功之後,這個使用者的密碼就設定成功了!
- 使用這個上述所建立的使用者來操作下面的安裝步驟
- 如果沒有的話,可以參考這個shell script
安裝步驟
首先,先執行下面的指令,相關的指令說明都已經在下面的註解了:
# 更新來源的鏡像檔 sudo apt-get update # 安裝add-apt-repository指令,這個指令可以用來加入第三方的PPA儲存庫 sudo apt-get install software-properties-common # 加入X2Go的套件儲存庫來源,並更新所有的鏡像來源位址並默認yes sudo add-apt-repository ppa:x2go/stable -y sudo apt-get update # 安裝X2Go server並默許為yes sudo apt-get install x2goserver x2goserver-xsession -y
上述的安裝步驟完成之後,這樣主機就已經有X2Go server了,接著,主機需要有桌面環境,才可以讓X2Go server與X2Go client順利的建立連線,讓client端可以順利的做遠端桌面的存取。
這邊我推薦兩個輕量型且實用的桌面環境,可以擇一安裝即可:
- Xfce (老鼠桌面,因為預設的桌面會有一隻老鼠)
- LXDE
安裝Xfce桌面環境
# 更新一下鏡像來源位址 sudo apt-get update # 安裝X2Go server啟動的Xfce桌面環境所需要的套件 sudo apt-get install xfce4 xfce4-goodies -y
安裝LXDE桌面環境
# 更新一下鏡像來源位址 sudo apt-get update # 安裝X2Go server啟動的LXDE桌面環境所需要的套件 sudo apt-get install -y xorg lxde-core lxterminal # 安裝X2Go server給LXDE桌面環境的bindings sudo apt-get install -y x2golxdebindings
到這裡,X2Go server與桌面環境就設定完成了,接著就是設定X2Go client了。
回到自己的client端,如果是Ubuntu的話,在client端主機執行下面的指令即可:
sudo apt-get install -y x2goclient
安裝好之後,就會有如下圖這個可以使用了:
如果是在Windows系統上面,則去這個網址把X2Go client端下載回來。也可以從首頁進去,看到底下截圖裡面的黃色標注部份的連結,點擊那個連結即可下載回來:
安裝的步驟很簡單,基本上就是下一步即可,並使用他的recommend建議的設定就好。
使用X2Go client
接著打開「X2Go client」應用就會看到下面的畫面:
接著把「Session」打開並按下「New session…」如下圖
打開之後會得到下面的圖示:
接著依序由上到下把相關的連線資訊填上去(黃色標注部份),如下圖:
上圖依序的填寫的資訊是:
- Host,主機的名稱,可以是IP位址也可以是網域名稱,這邊的IP位址只是範例而已。
- Login是在「前置環境」章節上面所設定的使用者名稱,這邊的「peter」為範例的使用者名稱。
- SSH port,為主機SSH連線的埠號(port number),預設為「22」,若有動到SSH server port number設定的話,則這邊需要改。
- 再來是設定連線有用的桌面環境,這裡取決於主機上面安裝的,如果是LXDE,則選擇「LXDE」,若是使用「Xfce」,則選擇「XFCE」。
上述設定完成之後,按下上圖畫面的右下的「ok」按鈕後就會回到主畫面了,這時候就會在右邊有一個剛剛建立的session的設定,如下截圖:
右邊也可以調整設定,像是解析度,桌面環境等等,點一下這個session設定,則可以得到下面的截圖:
這時候把密碼填上去即可。接著等一段時間….就會得到下面的畫面了:
上面截圖為LXDE桌面環境,視窗當然可以縮放,視窗會隨著縮放進行放大縮小。
若是選擇「Xfce」,則桌面環境會長成下面這樣:
- 裡面的操作非常簡便,不論是要使用黏貼板,複製貼上,還是使用TAB鍵,都可以做的到。
故障問題排除
Xfce桌面環境中的終端機無法開啟
小插曲:若是右鍵「在此開啟終端機」得到下面的訊息:
則需要設定「x-terminal-emulator」的執行路徑,使用下面的指令設定:
sudo update-alternatives --config x-terminal-emulator
接著會出現下面的列表:
從上面截圖中的清單找到「/usr/bin/xfce4-terminal.wrapper」並使用數字設定這個終端機對應到「x-terminal-emulator」
接著滑鼠右鍵的「在此開啟終端機」的選項就會成功把Xfce桌面環境的終端機叫起來了!
LXDE桌面環境開不起來
若使用X2Go client連線的時候,出現「x2go cannot create startlxde」等相關字樣,代表LXDE桌面環境少了一些必要的套件導致桌面環境無法啟動,這時候需要再執行下面的指令:
# startlxde指令需要下面這個套件,並默認為yes sudo apt-get install -y lxde-common
結論
- 到這裡,X2Go client與server安裝與設定就已經完成了,相信可以感覺到會比XRDP或是VNC server設定與安裝上來的簡單許多。
- X2Go server/client也是走加密的連線,其透過SSH tunnel連線利用X11協定傳輸相關的資料與畫面。
參考資料
- https://wiki.x2go.org/doku.php/wiki:repositories:ubuntu
- https://wiki.x2go.org/doku.php/doc:installation:x2goclient
- https://wiki.x2go.org/doku.php/doc:installation:x2goserver
- https://askubuntu.com/questions/899391/getting-input-output-error-running-anything-on-remote-desktop