−25%

Windows 年繳方案適用,至 10 月 31 日。 檢視方案

EQVPS
開始使用

如何在 Linux VPS 上安裝桌面並用遠端桌面連線(XFCE + xrdp)

替 Ubuntu 24.04 VPS 裝上圖形桌面,用一般的遠端桌面應用程式就能開啟:XFCE 和 xrdp、兩個會把事情搞砸的預設設定(工作階段不對、沒有 TLS),以及讓 3389 連接埠完全不暴露在網際網路上的做法。附實測的磁碟用量與每個工作階段的記憶體。

Linux 伺服器沒有螢幕,大多數時候也不需要。但有時候需要:必須從伺服器本身位址執行的瀏覽器、只有圖形介面的工具,或是一個可以一直開著、從任何電腦回來繼續使用的桌面。本指南替 Ubuntu 24.04 裝上輕量桌面 XFCE 與 xrdp,讓你用連線 Windows 伺服器時同一個遠端桌面應用程式開啟它。

我們在自己的 Ubuntu 24.04 映像上測試了每一步。有兩個預設設定讓第一次嘗試失敗,以下把兩個都修好。你需要一個具 sudo 權限的一般使用者,Ubuntu 設定指南會建立一個。範例中它叫 deploy。

1. 安裝 XFCE 與 xrdp

sudo apt update
sudo apt install -y xfce4 xfce4-goodies xrdp

在我們 2 GB 的伺服器上,這一步花了大約四分半鐘,用掉 1.7 GB 磁碟(安裝前已用 2.7 GB,安裝後 4.4 GB)。它會裝上 xrdp 0.9.24,並立即啟動,監聽 3389 連接埠。

2. 讓 xrdp 啟動 XFCE,而不是 GNOME

以要使用桌面的那位使用者登入,然後執行:

echo xfce4-session > ~/.xsession

沒有這個檔案時,我們第一次登入啟動的是 GNOME 而不是 XFCE,工作階段立刻以 "Oh no! Something has gone wrong" 結束。第 1 步的套件會順帶裝上 GNOME 的工作階段管理員,而 Ubuntu 會把它設為預設。有了 ~/.xsession,xrdp 就會啟動 XFCE。

3. 讓 xrdp 使用 TLS

xrdp 以自己的 xrdp 使用者執行,這個使用者讀不到伺服器的私密金鑰。我們的第一次連線成功了,但 /var/log/xrdp.log 顯示了為什麼不該信任它:

Cannot read private key file /etc/xrdp/key.pem: Permission denied
Non-TLS connection established from ::ffff:127.0.0.1

沒有私密金鑰,xrdp 就會退回舊的 RDP 加密,而不是 TLS。給它讀取權限並重新啟動:

sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp

下一次連線在我們的日誌中顯示為 TLS connection established ... TLSv1.3。你也可以用同樣的方法檢查自己的伺服器:

sudo grep -E "TLS connection|Non-TLS" /var/log/xrdp.log | tail -2

4. 別讓 3389 連接埠暴露在網際網路上

安裝後,xrdp 會在所有位址上監聽。和 Windows 不同,xrdp 沒有 Network Level Authentication,所以任何能連到這個連接埠的人都會看到登入畫面,可以在上面猜密碼。讓它只在伺服器本機上監聽:

sudo sed -i 's|^port=3389$|port=tcp://127.0.0.1:3389|' /etc/xrdp/xrdp.ini
sudo systemctl restart xrdp
ss -ltn | grep 3389

最後一行應該顯示 127.0.0.1:3389。在我們的測試中,之後直接連到伺服器位址的 3389 會被拒絕,而下一步的通道照常可用。

5. 透過 SSH 連線

在你自己的電腦上開啟通道。Windows 的 PowerShell 裡也有同樣的 ssh 指令:

ssh -L 13389:localhost:3389 deploy@YOUR.SERVER.IP

NAT 方案要加上 -p 和控制台中的專屬 SSH 連接埠。保持這個視窗開著。接著把遠端桌面應用程式指向 localhost:13389,用 deploy 和該使用者的密碼登入:

  • Windows: 遠端桌面連線(mstsc)。
  • macOS: App Store 中的 Windows App。
  • Linux: Remmina,或 xfreerdp /v:localhost:13389 /u:deploy。

本機連接埠用 13389 而不是 3389,是因為你電腦上的 3389 可能已經被它自己的遠端桌面占用。第一次連線時,應用程式會警告一個它不認得的憑證。那是伺服器的自我簽署憑證,而且連線本來就在 SSH 中加密。

6. 你會得到什麼

你會得到一個有面板、檔案管理員和終端機的 XFCE 桌面。在我們的伺服器上,一個工作階段大約增加了 360 MB 記憶體:連線前已用 388 MB,工作階段期間 747 MB。

關閉遠端桌面視窗並不會登出。在我們的測試中,中斷連線後一個長時間執行的指令仍在繼續。再次連線時,xrdp 把我們帶回同一個工作階段(日誌中是 reconnected session ... display :10)。要真正結束工作階段,請在 XFCE 選單中按 Log Out。

選哪個方案

桌面比較吃記憶體而不是 CPU。Micro(2 vCPU、2 GB、25 GB,$5/月)執行 XFCE 與輕量工具很輕鬆。如果打算在工作階段中一直開著瀏覽器,請選 Small,4 vCPU、4 GB,$8/月。兩者都是 NAT 方案,在這裡沒有影響:遠端桌面走的是你的 SSH 連接埠。

如果你真正需要的是 Windows 軟體,Windows VPS 可以直接執行,Windows-Small 起價 $11/月。Ubuntu 24.04 位於 Ubuntu VPS 頁面,所有 VPS Linux 方案都可選。付款方式為 Base、Ethereum 或 Polygon 網路上的 USDT、USDC 或 ETH。

常見問題

能用 Windows 內建的遠端桌面應用程式連線嗎?

可以。xrdp 使用 RDP 通訊協定,所以 Windows 內建的遠端桌面連線、macOS 上的 Windows App,以及 Linux 上的 Remmina 或 xfreerdp 都能用。連線對象是經由 SSH 通道的 localhost,而不是伺服器位址。

NAT 方案上能用嗎?

可以。RDP 連線走在 SSH 裡面,而 SSH 正是 NAT 方案轉送到你伺服器的唯一連接埠。本指南在所有方案上都建議這種做法,因為 3389 連接埠對網際網路保持關閉。

桌面會用掉多少記憶體?

在我們的測試伺服器上,一個 XFCE 工作階段大約增加了 360 MB:已用記憶體從 388 MB 增加到 747 MB。2 GB 的 Micro 方案足以執行桌面與輕量工具。如果要在工作階段中使用瀏覽器,4 GB 會比較從容。

出現黑畫面或 "Oh no! Something has gone wrong",怎麼回事?

xrdp 啟動的是 GNOME 而不是 XFCE。第 1 步的套件會順帶裝上 GNOME 的工作階段管理員,而 Ubuntu 會把它設為系統預設。替登入的使用者建立內容為 xfce4-session 的 ~/.xsession,再重新連線。

能用 root 透過 RDP 登入嗎?

xrdp 預設允許(/etc/xrdp/sesman.ini 中的 AllowRootLogin=true),但最好使用具 sudo 權限的一般使用者。若要禁止 root,請設為 AllowRootLogin=false 並重新啟動 xrdp。

評論

目前還沒有評論。歡迎成為第一位。

發表評論

評論在顯示前會經過審核。