如何在Ubuntu 16.04與18.04上面安裝X2Go server

前言

如果有設定過在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,接著會提示輸入兩次密碼,兩次密碼都成功之後,這個使用者的密碼就設定成功了!
      • 使用這個上述所建立的使用者來操作下面的安裝步驟

安裝步驟

首先,先執行下面的指令,相關的指令說明都已經在下面的註解了:


# 更新來源的鏡像檔

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