Ubuntu 無螢幕遠端桌面設定教學
Ubuntu 26.04 已不支援 xrdp 運行 GNOME。請改用內建的 GNOME Remote Login 功能,透過 SSH 啟用遠端登入,即可在無螢幕狀態下透過 RDP 協定連接桌面環境。
如何在無螢幕狀態下使用 Ubuntu 遠端桌面
若要在無螢幕狀態下使用 Ubuntu 遠端桌面,請開啟 GNOME Remote Desktop 的「遠端登入」(Remote Login)模式。遠端登入功能會直接從登入畫面啟動獨立的 GNOME 工作階段,因此機器無需連接螢幕,也不需要使用者預先登入。您只需透過 SSH 使用 grdctl 設定一次,之後即可從任何 RDP(遠端桌面協定)用戶端連線至 3389 埠。
本指南適用於未連接螢幕的 Ubuntu Desktop 電腦,例如家用伺服器或迷你 PC。內容首先涵蓋 Ubuntu 26.04 LTS,隨後說明 24.04 LTS 的差異之處。若您的機器是搭載輕量級 XFCE 桌面的 VPS(虛擬私人伺服器),則 xrdp 仍適用於該情境,請參考 在搭載 xrdp 與 XFCE 的 Linux VPS 上使用遠端桌面 的詳細步驟。本指南不再重複說明該部分。
為何 xrdp 無法在 Ubuntu 26.04 上與 GNOME 搭配使用
許多舊版指南會引導安裝 xrdp。但在 Ubuntu 26.04 上,這將導致無法進入 GNOME 桌面。原因詳見 26.04 的發行說明:GNOME Shell 已無法以 X.org 工作階段執行,且 Ubuntu Desktop 工作階段現在僅能在 Wayland 後端上運作。由於 xrdp 僅支援 Xorg,因此它無法啟動任何 GNOME 工作階段。
來自 c-nergy.be 的熱門 xrdp 安裝腳本也指出相同狀況。其於 2026 年 5 月發布的 1.6 版本,在偵測到不支援 X11 的 GNOME 桌面時,將不會安裝 xrdp 套件。作者表示 Ubuntu 26.04 的 GNOME 環境不受支援,並建議 GNOME 使用者改用內建的 GNOME Remote Desktop。
其他桌面環境仍有選擇。發行說明指出,KDE on X11、Xfce、MATE、i3 及許多其他環境仍可啟動 X.org 工作階段,且 X11 應用程式仍可透過 XWayland 執行。關於此版本的其餘變更,請參閱 Ubuntu 26.04.1 的變更內容與升級時機。
桌面共享或遠端登入:您需要哪一個?
GNOME Remote Desktop 是 GNOME 內建的 RDP 伺服器。上游開發者定義了三種執行方式:遠端協助、單使用者無頭模式(headless),以及無頭遠端登入。設定應用程式中以兩個名稱呈現其中兩種模式。
- 桌面共享 (Desktop Sharing) 即遠端協助。它會鏡像顯示機器上已在執行的工作階段。您會看到與坐在電腦前的人相同的畫面。
- 遠端登入 (Remote Login) 即無頭遠端登入。您的 RDP 客戶端會先顯示 GDM (GNOME display manager) 登入畫面,您再登入一個新的工作階段。遠端登入僅支援 RDP,不支援 VNC (virtual network computing)。
對於沒有連接螢幕的機器,遠端登入是您需要的模式。桌面共享需要一個已經存在的工作階段。重新開機後,因為沒有人登入,桌面共享將無法鏡像任何畫面。
桌面共享還有第二個陷阱。上游設定說明指出,在遠端協助模式下,鎖定螢幕會同時關閉遠端連線。因此,當機器上的工作階段鎖定時,您的桌面共享連線也會隨之中斷。遠端登入不依賴本機工作階段,這就是為什麼它適合沒有人操作的機器。
這兩種模式監聽的連接埠也不同。GNOME 說明文件指出遠端登入使用 3389 埠。桌面共享則會使用不同的連接埠(例如 3390),因此您可能需要在客戶端手動輸入該連接埠。伺服器版本 46 新增了處理系統 daemon 與使用者層級 daemon 之間此類衝突的功能。
檢查您的版本
lsb_release -ds
apt-cache policy gnome-remote-desktopapt-cache policy 應顯示包含版本號的 Installed: 行。截至 2026 年 11 月 1 日,Launchpad 在 26.04 的更新儲存庫中列出 50.2-0ubuntu0.1,在 24.04 中則列出 46.3-0ubuntu1.2。若 Installed: 顯示為 (none),請安裝該套件:
sudo apt update
sudo apt install -y gnome-remote-desktop主版本號至關重要,因為 grdctl 在 46 與 50 版本之間有所變更。以下步驟將指出各項差異。
在 Ubuntu 26.04 上設定 SSH 遠端登入
您需要透過 SSH 存取該主機。若尚未執行 SSH 伺服器,請連接螢幕並執行 sudo apt install -y openssh-server。若您已連接螢幕,亦可使用下一節的「設定」介面,並跳過這些指令。
步驟 1:確認服務帳號
grdctl --system 不會以您目前的帳號變更設定。根據 50.2 原始碼,它會透過 pkexec --user gnome-remote-desktop 重新執行自身,因此它讀取的每個檔案都必須能被該帳號讀取。請確認該帳號是否存在:
id gnome-remote-desktop您應該會看到一行 uid=。若顯示 no such user,則表示該套件尚未安裝。
步驟 2:建立 TLS 憑證
GNOME Remote Desktop 中的 RDP 需要 TLS (傳輸層安全性) 金鑰與憑證。上游文件建議以 gnome-remote-desktop 帳號為系統服務建立這些檔案。請以該帳號執行以下來自上游文件的 OpenSSL 指令:
sudo -u gnome-remote-desktop sh -c 'mkdir -p ~gnome-remote-desktop/.local/share/gnome-remote-desktop && openssl req -new -newkey rsa:4096 -days 720 -nodes -x509 -subj /C=SE/ST=NONE/L=NONE/O=GNOME/CN=gnome.org -out ~gnome-remote-desktop/.local/share/gnome-remote-desktop/tls.crt -keyout ~gnome-remote-desktop/.local/share/gnome-remote-desktop/tls.key'該憑證有效期為 720 天。請記下此日期,因為您必須在憑證過期前建立新憑證。接著將系統 daemon 指向這兩個檔案:
sudo grdctl --system rdp set-tls-key ~gnome-remote-desktop/.local/share/gnome-remote-desktop/tls.key
sudo grdctl --system rdp set-tls-cert ~gnome-remote-desktop/.local/share/gnome-remote-desktop/tls.crt步驟 3:設定 RDP 憑證
這是一組獨立的 RDP 使用者名稱與密碼,並非您的 Linux 帳號。遠端使用者需先輸入這組共用憑證,隨後再於 GDM 登入畫面使用其 Linux 帳號登入。在 26.04 上,請執行不帶參數的 set-credentials,它會從標準輸入讀取使用者名稱與密碼,確保密碼不會留存在您的 shell 歷史紀錄中:
sudo grdctl --system rdp set-credentials步驟 4:啟用 RDP 並啟動服務
sudo grdctl --system rdp enable
sudo systemctl enable --now gnome-remote-desktop.service
systemctl is-active gdm.service上游文件亦建議啟用 gdm.service,因為遠端登入會將您導向 GDM 登入畫面。Ubuntu Desktop 已預設使用 GDM,因此最後一個指令應會顯示 active。若未顯示,請執行 sudo systemctl enable --now gdm.service。
步驟 5:檢查監聽狀態
sudo grdctl --system status --show-credentials
systemctl is-active gnome-remote-desktop.service
sudo ss -tlnp | grep 3389grdctl --system status --show-credentials 應顯示 RDP 區段已在 3389 埠啟用,並包含您的 TLS 檔案與使用者名稱。若沒有 --show-credentials,status 仍會顯示埠號與 TLS 檔案,但使用者名稱會顯示為 (hidden)。不同版本間的確切標籤可能略有差異。systemctl is-active 應顯示 active,而 ss 應顯示一行 LISTEN,對應 3389 埠。若 ss 沒有輸出,表示沒有任何服務在監聽,用戶端將會收到連線拒絕的錯誤。請使用 journalctl -u gnome-remote-desktop.service -n 50 讀取日誌以排查原因。
步驟 6:記錄憑證指紋
由於該憑證為自簽憑證,您的 RDP 用戶端在首次連線時會發出警告。請現在列印指紋,並在接受連線前與用戶端顯示的指紋進行比對:
sudo openssl x509 -in ~gnome-remote-desktop/.local/share/gnome-remote-desktop/tls.crt -noout -fingerprint -sha256部分用戶端會顯示 SHA-1 指紋。若遇到此情況,請使用 -sha1 執行相同指令。若指紋不符,表示您連線的並非您的主機。
設定路徑,若能連接螢幕一次
若您能連接一次螢幕,可透過圖形介面設定相同模式。GNOME 目前的說明文件提供以下路徑:開啟 Settings,接著進入 System,再點選 Remote Desktop,最後選擇 Remote Login。點擊 Unlock 並進行驗證,隨後開啟 Remote Login。
該頁面上的 Login Details 區塊會顯示用戶端所需的帳號與密碼。Verify Encryption 則顯示憑證指紋以供比對。完成後即可拔除螢幕。Remote Login 會持續運作,因為它不需要本地登入工作階段。
Desktop Sharing 位於 Remote Desktop 下的另一個頁面。開啟 Desktop Sharing 可讓他人檢視螢幕,開啟 Remote Control 則可讓他人進行操作。基於上述原因,請僅在保持工作階段登入的狀態下執行此操作。
Ubuntu 24.04 的差異之處
Ubuntu 24.04 同樣具備遠端登入(Remote Login)功能。上游專案在 46.alpha 版本中透過 GDM 加入了無頭(headless)遠端登入,而 Noble 發行版搭載的是 46.3 版本。46.2 版本修復了 CVE-2024-5148,此漏洞發生在登入畫面切換至使用者工作階段的過程中,因此請務必確認 apt-cache policy 顯示的是更新後的版本,而非原始的 46.1。
設定介面佈局應保持一致。GNOME Settings 46 新增了「遠端登入」(Remote Login)頁面,將舊有的「遠端桌面」(Remote Desktop)重新命名為「桌面共享」(Desktop Sharing),並將「遠端桌面」歸類在新的「系統」(System)面板下。Noble 發行版搭載的是 Settings 46.7。請勿將「遠端登入」與同一面板中的 Secure Shell 混淆:Settings 46 將 SSH 開關命名為此名稱,這是不同的功能。
命令列最大的差異在於 set-credentials。在 46.3 版本中,該指令需要同時提供使用者名稱與密碼作為參數,且不會出現提示輸入。請先將密碼讀入變數,以免其殘留在 shell 歷史紀錄中:
read -rsp 'RDP password: ' GRD_PASS; echo
sudo grdctl --system rdp set-credentials rdpuser "$GRD_PASS"
unset GRD_PASS上述 26.04 步驟中的其他指令在 46.3 版本中格式相同:set-tls-key、set-tls-cert、enable 與 status。不過,24.04 缺少了三項功能。持久化遠端登入工作階段(Persistent remote login sessions)是在 47 版本才加入的,因此 46.x 組建版本早於此功能。請在斷線前儲存工作,並測試重新連線時工作階段的狀態。50 版本亦加入了無頭 GDM 自動登入工作階段的遠端登入功能以及 Kerberos 驗證。在 24.04 上,這兩項功能皆不支援。
若您特別需要搭配 GNOME 使用 xrdp,c-nergy 指令碼僅拒絕 GNOME 49 及更新版本,而 24.04 執行的是 GNOME 46。這也是部分讀者選擇停留在舊版發行版的原因,而 從 Ubuntu 26.04 降級至 24.04 一文解釋了此舉實際需付出的代價。
自動登入:在依賴此功能前請先進行測試
部分指南建議開啟自動登入,以便在重新開機後,Desktop Sharing 能有可供鏡像的連線工作階段。GNOME 說明文件將此開關置於 Settings、System、Users、Unlock、Automatic Login 下方。該頁面同時警告,任何啟動電腦的人皆可使用您的帳號與資料。
另有一個需要謹慎的原因。在使用者模式下,來源端會透過 libsecret 將 Desktop Sharing 的 RDP 憑證儲存在您的預設鑰匙圈集合中。啟用自動登入後,您在開機時無需輸入密碼。因此,請在重新開機後先測試 Desktop Sharing 連線,再離開電腦。Remote Login 不需要這些設定,因為它會從登入畫面啟動。
為什麼不應將 3389 埠暴露於網際網路
請勿在家用路由器上轉發 3389 埠。公開的 RDP 埠會引來陌生人的登入嘗試,而阻擋他們與您登入畫面之間的唯一防線僅是一組共用密碼。請透過您已掌控的加密路徑存取該主機。以下兩種方案效果良好。
選項 1:SSH 通道
若您已能透過 SSH 存取該主機,請將本機埠轉發至該主機的 RDP 埠:
ssh -N -L 13389:127.0.0.1:3389 you@home-box-L 會將本機 13389 埠轉發至主機上的 3389 埠,而 -N 則指示 SSH 不要執行遠端指令,因為您僅需要轉發功能。請保持該終端機視窗開啟。將您的 RDP 客戶端指向 127.0.0.1:13389。使用 13389 而非 3389 是因為已啟用遠端桌面服務的 Windows 電腦本身已佔用 3389 埠。對外僅需開放 SSH 埠即可。
選項 2:Tailscale
Tailscale 能將兩台機器置於同一個私有網路中,因此兩者皆無需在路由器上開啟連接埠。請依照 Tailscale Linux 文件中的指令,將其安裝於 Ubuntu 主機上:
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up
tailscale ip -4同時在您的客戶端電腦上安裝 Tailscale,接著將 RDP 客戶端指向顯示的 tailscale ip -4 位址,並使用 3389 埠。若安裝腳本因錯誤而中斷,修正 Ubuntu 上的 Tailscale 安裝錯誤 一文涵蓋了常見問題。此操作無需使用 Tailscale SSH。Tailscale SSH 僅服務於 22 埠且僅限於 Tailscale 位址,而 RDP 是獨立的連接埠。
若主機上已啟用 ufw,您可以僅允許來自 tailnet 介面的 RDP 連線:
sudo ufw allow in on tailscale0 to any port 3389 proto tcp接著透過 如何列出 Ubuntu 上啟用的防火牆規則 確認實際開放的項目。3389 埠不應出現在任何允許來自外部存取的規則中。
當連線失敗時
客戶端顯示連線被拒絕。 您使用的連接埠上沒有任何服務在監聽。請在該機器上執行 sudo ss -tlnp | grep 3389。若無輸出,代表服務已停止或未啟用 RDP,請重複步驟 4 並閱讀 journalctl -u gnome-remote-desktop.service -n 50。若透過 SSH tunnel 連線,請同時檢查 ssh -N 視窗是否仍開啟。
客戶端要求輸入兩次密碼。 這對於遠端登入(Remote Login)是正常現象。第一個提示要求的是您透過 set-credentials 設定的 RDP 配對密碼。第二個是 GDM 登入畫面,要求輸入您的 Linux 帳號密碼。在第一個提示輸入 Linux 密碼會失敗,因為兩者是分開的。
您預期進入已開啟的連線階段,卻看到登入畫面。 您連線到了屬於遠端登入的 3389 埠。當遠端登入開啟時,桌面共享(Desktop Sharing)會在不同的連接埠執行,請檢查其設定頁面顯示的連接埠。
桌面共享在一段時間後中斷。 該機器的連線階段已鎖定。在遠端協助模式下,鎖定螢幕會關閉遠端連線。若機器未連接螢幕,請使用遠端登入。
set-credentials 在 24.04 上失敗。 46.3 版本需要兩個參數。請使用 24.04 章節中的 read -rsp 格式。
FAQ
我可以在 Ubuntu 26.04 上將 xrdp 與 GNOME 搭配使用嗎?
不行。Ubuntu 26.04 的發行說明指出 GNOME Shell 已無法以 X.org 工作階段執行,而 xrdp 僅支援 Xorg。基於此原因,c-nergy.be 安裝程式會拒絕在 GNOME 49 及更新版本上安裝 xrdp。請改用 GNOME Remote Desktop 的 Remote Login 功能,或是將 xrdp 搭配仍支援 X.org 工作階段的桌面環境(例如 XFCE)。
Ubuntu 遠端桌面在未連接螢幕時可以使用嗎?
可以,在 Remote Login 模式下即可。上游開發者稱之為 headless remote login:您的 RDP 客戶端會取得 GDM 登入畫面並登入至新的工作階段,因此不需要本地螢幕或已登入的使用者。Desktop Sharing 則不同,它會鏡像目前正在執行的工作階段,因此若在重開機後無人登入,將沒有畫面可供分享。
GNOME Remote Desktop 在 Ubuntu 上使用哪個埠?
Remote Login 使用 3389 埠(標準 RDP 埠),這也是 gnome-remote-desktop 原始碼中的預設值。當 Remote Login 開啟時,Desktop Sharing 會移至其他埠(例如 3390),您需在客戶端輸入該埠號。在機器上執行 sudo ss -tlnp 可查看實際監聽的埠。
在路由器上轉發 3389 埠安全嗎?
請勿這樣做。公開的 RDP 埠會招致登入嘗試,且登入畫面僅有一組共用密碼作為防護。請改用 ssh -N -L 13389:127.0.0.1:3389 you@home-box 透過 SSH 轉發本地埠,或是將兩台機器加入 Tailscale,並連線至該機器的 Tailscale 位址與 3389 埠。
Remote Login 在 Ubuntu 24.04 上可以使用嗎?
可以。Headless remote login 功能於 gnome-remote-desktop 46 版本中加入,而 Ubuntu 24.04 隨附版本為 46.3。主要差異在於 46.3 版本的 grdctl --system rdp set-credentials 需要使用者名稱與密碼作為參數,而 26.04 可從標準輸入讀取。持久性遠端登入工作階段(Persistent remote login sessions)直到 47 版本才加入,因此在 24.04 上中斷連線前,請務必儲存您的工作。