安裝和設定 xrdp 以搭配 Ubuntu 使用遠端桌面

適用於:✔️ Linux VM ✔️ 彈性擴展集

當不熟悉 Linux 或快速疑難解答案例時,使用遠端桌面可能比安全殼層 (SSH) 存取更容易。 本文會詳細說明如何為執行 Ubuntu 的 Linux VM,安裝和設定桌面環境 (xfce) 和遠端桌面 (xrdp)。

本文是使用 Ubuntu 18.04 VM 撰寫和測試。

注意

相較於本機桌面使用,透過網際網路使用遠端桌面將會帶來明顯的「延遲」(輸入延遲)。 這可能會受到多種因素的影響,包括本機網際網路速度和與裝載虛擬機之資料中心的距離。 此延遲通常不會反映 VM 本身的效能。

必要條件

本文需要 Azure 中現有的 Ubuntu 18.04 LTS 或 Ubuntu 20.04 LTS VM。 如果您需要建立 VM,請使用下列其中一個方法︰

在 Linux VM 上安裝桌面環境

在 Azure 中大多數 Linux VM 預設沒有安裝桌面環境。 Linux VM 通常是使用 SSH 連線來管理,而不是桌面環境,不過有數個桌面環境可供您選擇安裝。 視您選擇的桌面環境而定,它最多耗用 2 GB 的磁碟空間,最多需要 10 分鐘的時間才能安裝及設定所有必要的套件。

下列範例會在 Ubuntu VM 上安裝輕量型 xfce4 桌面環境。 其他散發的命令稍微不同 (例如,使用 yum 以在 Red Hat Enterprise Linux 上安裝及設定適當的 selinux 規則,或使用 zypper 在 SUSE 上安裝)。

首先,SSH 連接至您的 VM。 下列範例會連線至名為 myvm.westus.cloudapp.azure.com 且具有使用者名稱 azureuser 的 VM。 使用您自己的值:

ssh azureuser@myvm.westus.cloudapp.azure.com

如果您使用 Windows,並且需要使用 SSH 的詳細資訊,請參閱如何使用 SSH 金鑰與 Windows

接下來,使用 apt 安裝 xfce:

sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get -y install xfce4
sudo apt install xfce4-session

安裝及設定遠端桌面伺服器

現在您已安裝桌面環境,設定遠端桌面服務來接聽連入遠端存取連線。 xrdp 是開放原始碼遠端桌面通訊協定 (RDP) 伺服器,適用於大部分的 Linux 散發套件,而且很適合處理 xfce。 在您的 Ubuntu VM 上安裝 xrdp,如下所示:

sudo apt-get -y install xrdp
sudo systemctl enable xrdp

在 Ubuntu 20 上,您必須提供憑證存取權給 xrdp 使用者:

sudo adduser xrdp ssl-cert

告訴 xrdp 當您啟動工作階段時要使用的桌面環境。 設定 xrdp 以使用 xfce 做為您的桌面環境,如下所示︰

echo xfce4-session >~/.xsession

重新啟動 xrdp 服務,讓變更生效,如下所示︰

sudo service xrdp restart

設定本機使用者帳戶密碼

如果您在建立 VM 時已為您的使用者帳戶建立密碼,請略過此步驟。 如果您只使用 SSH 金鑰驗證,並且尚未設定本機帳戶密碼,請先指定密碼,再使用 xrdp 登入您的 VM。xrdp 無法接受 SSH 金鑰進行驗證。 下列範例會指定使用者帳戶 azureuser 的密碼:

sudo passwd azureuser

注意

如果目前不允許密碼登入,則指定密碼不會將 SSHD 組態更新為允許密碼登入。 從安全性的觀點而言,您可能想要使用金鑰型驗證的 SSH 通道連接至 VM,然後連接到 xrdp。 如果是這樣,請略過下一個步驟 (建立網路安全性群組規則) 以允許遠端桌面流量。

建立遠端桌面流量的網路安全性群組規則

若要允許遠端桌面流量觸達您的 Linux VM,必須建立網路安全性群組規則,允許連接埠 3389 上的 TCP 觸達您的 VM。 如需有關網路安全性群組規則的詳細資訊,請參閱什麼是網路安全性群組?您也可以使用 Azure 入口網站建立網路安全性群組規則

下列範例會使用 az vm open-port 在連接埠 3389 上建立網路安全性群組規則。 從 Azure CLI (而非您 VM 的 SSH 工作階段) 開啟下列網路安全性群組規則:

az vm open-port --resource-group myResourceGroup --name myVM --port 3389

連接 Linux VM 與遠端桌面用戶端

開啟您的本機遠端桌面用戶端,並連接至 Linux VM 的 IP 位址或 DNS 名稱。

Screenshot of the remote desktop client.

在您的 VM 上輸入使用者帳戶的使用者名稱和密碼,如下所示︰

Screenshot of the xrdp log in screen.

驗證之後,會載入 xfce 桌面環境,看起來類似下列範例︰

xfce desktop environment through xrdp

如果您的本機 RDP 用戶端使用網路層級驗證 (NLA),您會必須停用該連線設定。 XRDP 目前不支援 NLA。 您也可以尋找支援 NLA 的替代 RDP 解決方案,例如 FreeRDP

疑難排解

如果無法使用遠端桌面用戶端連線至 Linux VM,請在 Linux VM 上使用 netstat,以檢查您的 VM 是否正在接聽 RDP 連線,如下所示:

sudo netstat -plnt | grep rdp

下列範例顯示 VM 如預期地接聽 TCP 連接埠 3389:

tcp     0     0      127.0.0.1:3350     0.0.0.0:*     LISTEN     53192/xrdp-sesman
tcp     0     0      0.0.0.0:3389       0.0.0.0:*     LISTEN     53188/xrdp

如果未接聽 xrdp-sesman 服務,在 Ubuntu VM 上重新啟動服務,如下所示:

sudo service xrdp restart

在您的 Ubuntu VM 上檢閱 /var/log 中的記錄,以取得為何服務沒有回應的指示。 您也可以在遠端桌面連線嘗試期間監視 syslog,以檢視任何錯誤:

tail -f /var/log/syslog

Red Hat Enterprise Linux 和 SUSE 等其他 Linux 散發重新啟動服務的方式可能有所不同,要檢閱的記錄檔位置也不同。

如果您未在遠端桌面用戶端收到任何回應,而且在系統記錄檔中看不到任何事件,這種行為表示遠端桌面流量無法觸達 VM。 檢閱網路安全性群組規則,以確保您擁有規則以允許連接埠 3389 上的 TCP。 如需詳細資訊,請參閱針對應用程式連線能力問題進行疑難排解

下一步

如需有關建立和使用 SSH 金鑰與 Linux VM 的詳細資訊,請參閱在 Azure 中為 Linux VM 建立 SSH 金鑰

如需從 Windows 使用 SSH 的詳細資訊,請參閱如何以 Windows 使用 SSH 金鑰