在Ubuntu 22.04上執行RDP伺服器

Ubuntu 22.04 RDP Server Build

前言

在現代的 IT 環境中,遠端桌面存取已成為不可或缺的功能。無論是遠端辦公、伺服器管理,還是技術支援,都需要穩定且安全的遠端連線方案。RDP(Remote Desktop Protocol)是由 Microsoft 開發的專有協定,主要用於 Windows 系統之間的遠端桌面連線。

然而,在 Linux 環境中,我們可以透過 xrdp 這個開源專案來實現 RDP 伺服器功能。xrdp 允許 Windows 使用者使用內建的「遠端桌面連線」工具直接連線至 Linux 主機,無需額外安裝客戶端軟體,大幅降低使用門檻。

為什麼選擇 xrdp?

  • 跨平台相容性:Windows 使用者可直接使用內建 RDP 客戶端連線
  • 無需額外軟體:不需要在客戶端安裝 VNC Viewer 等第三方工具
  • 支援剪貼簿共享:可在本機與遠端之間複製貼上文字
  • 支援磁碟機重新導向:可存取本機磁碟機
  • 加密傳輸:支援 TLS 加密保護連線安全

系統需求

在開始安裝之前,請確認您的系統符合以下需求:

  • Ubuntu 22.04 LTS(Desktop 或 Server 版本)
  • 至少 2GB RAM(建議 4GB 以上以獲得流暢體驗)
  • 至少 20GB 可用磁碟空間
  • 網路連線正常
  • 具有 sudo 權限的使用者帳號

安裝步驟

步驟一:更新系統套件

首先,確保系統套件為最新版本:

1
sudo apt update && sudo apt upgrade -y

步驟二:安裝桌面環境

xrdp 需要搭配桌面環境才能正常運作。Ubuntu 提供多種桌面環境選擇,以下介紹幾種常見選項:

選項 A:XFCE(推薦,輕量快速)

XFCE 是一個輕量級的桌面環境,佔用資源少,非常適合遠端桌面使用:

1
sudo apt install xfce4 xfce4-goodies -y

如果您希望安裝完整的 Xubuntu 桌面環境:

1
sudo apt install xubuntu-desktop -y

選項 B:GNOME(Ubuntu 預設桌面)

如果您偏好 Ubuntu 預設的 GNOME 桌面環境:

1
sudo apt install ubuntu-desktop -y

注意:GNOME 桌面較為華麗但佔用較多資源,在遠端連線時可能會感覺較慢。

選項 C:MATE(輕量且傳統風格)

MATE 是 GNOME 2 的延續,適合喜歡傳統桌面風格的使用者:

1
sudo apt install ubuntu-mate-desktop -y

選項 D:KDE Plasma(功能豐富)

KDE Plasma 提供豐富的自訂選項:

1
sudo apt install kubuntu-desktop -y

步驟三:安裝 xrdp

安裝 xrdp 套件:

1
sudo apt install xrdp -y

步驟四:設定 xrdp 使用者權限

將 xrdp 使用者加入 ssl-cert 群組,以便存取 SSL 憑證:

1
sudo adduser xrdp ssl-cert

步驟五:設定桌面環境

建立或編輯 ~/.xsession 檔案,指定要使用的桌面環境。

如果您安裝的是 XFCE:

1
echo "xfce4-session" > ~/.xsession

如果您安裝的是 GNOME:

1
echo "gnome-session" > ~/.xsession

步驟六:設定防火牆

開放 RDP 預設連接埠 3389:

1
2
sudo ufw allow 3389/tcp
sudo ufw reload

確認防火牆規則:

1
sudo ufw status

步驟七:啟動 xrdp 服務

啟動並設定 xrdp 開機自動啟動:

1
2
sudo systemctl enable xrdp
sudo systemctl start xrdp

確認服務狀態:

1
sudo systemctl status xrdp

您應該會看到類似以下的輸出,顯示服務正在執行:

1
2
3
 xrdp.service - xrdp daemon
     Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled)
     Active: active (running) since ...

xrdp.ini 重要設定參數

xrdp 的主要設定檔位於 /etc/xrdp/xrdp.ini,以下說明一些重要的設定參數:

編輯設定檔

1
sudo nano /etc/xrdp/xrdp.ini

[Globals] 區段重要參數

參數說明建議值
portRDP 監聽連接埠3389(預設)
crypt_level加密等級highfips(安全環境)
channel_code啟用虛擬通道1(啟用)
max_bpp最大色彩深度32(全彩)
fork是否 fork 子程序處理連線true
tcp_nodelay停用 Nagle 演算法true(降低延遲)
tcp_keepaliveTCP Keep-Alivetrue

範例設定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
[Globals]
; RDP 監聽連接埠
port=3389

; 加密等級:low, medium, high, fips
crypt_level=high

; 最大色彩深度
max_bpp=32

; 啟用虛擬通道(剪貼簿、磁碟機重新導向等)
channel_code=1

; TCP 優化
tcp_nodelay=true
tcp_keepalive=true

; 連線逾時設定(秒)
; 使用者名稱輸入逾時
ls_user_timeout=60
; 密碼輸入逾時
ls_password_timeout=60

修改後重啟服務

1
sudo systemctl restart xrdp

SSL/TLS 加密設定

為了確保遠端連線的安全性,建議啟用 TLS 加密。

使用自簽憑證(預設)

xrdp 安裝時會自動產生自簽憑證,位於 /etc/xrdp/ 目錄:

  • key.pem:私鑰
  • cert.pem:憑證

使用自訂憑證

如果您有正式的 SSL 憑證,可以替換預設憑證:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 備份原始憑證
sudo cp /etc/xrdp/key.pem /etc/xrdp/key.pem.bak
sudo cp /etc/xrdp/cert.pem /etc/xrdp/cert.pem.bak

# 複製您的憑證
sudo cp /path/to/your/private.key /etc/xrdp/key.pem
sudo cp /path/to/your/certificate.crt /etc/xrdp/cert.pem

# 設定正確權限
sudo chown xrdp:xrdp /etc/xrdp/key.pem /etc/xrdp/cert.pem
sudo chmod 600 /etc/xrdp/key.pem
sudo chmod 644 /etc/xrdp/cert.pem

強制使用 TLS

編輯 /etc/xrdp/xrdp.ini,在 [Globals] 區段加入:

1
2
security_layer=tls
ssl_protocols=TLSv1.2, TLSv1.3

重啟服務使設定生效:

1
sudo systemctl restart xrdp

效能優化建議

1. 客戶端設定優化

在 Windows 遠端桌面連線程式中,調整以下設定可提升效能:

  1. 開啟「遠端桌面連線」
  2. 點選「顯示選項」
  3. 切換到「體驗」頁籤
  4. 選擇「LAN(10 Mbps 或更高速)」

2. 減少色彩深度

如果網路頻寬有限,可以降低色彩深度:

編輯 /etc/xrdp/xrdp.ini

1
max_bpp=16

3. 使用輕量級桌面環境

如前所述,XFCE 相較於 GNOME 更適合遠端桌面使用,能提供更流暢的體驗。

4. 停用桌面特效

在 XFCE 中停用合成器:

  1. 開啟「設定」→「視窗管理員調校」
  2. 切換到「合成器」頁籤
  3. 取消勾選「啟用顯示合成」

5. 調整 xrdp-sesman 設定

編輯 /etc/xrdp/sesman.ini

1
2
3
4
5
6
7
[Globals]
; 最大同時連線數
MaxSessions=50

[Sessions]
; X11 顯示號碼範圍
X11DisplayOffset=10

6. 系統層級優化

1
2
3
# 增加檔案描述符限制
echo "xrdp soft nofile 32768" | sudo tee -a /etc/security/limits.conf
echo "xrdp hard nofile 65536" | sudo tee -a /etc/security/limits.conf

常見問題排除

問題一:黑畫面或無法顯示桌面

症狀:連線成功但只顯示黑畫面

解決方案

  1. 確認已正確設定 .xsession
1
2
echo "xfce4-session" > ~/.xsession
chmod +x ~/.xsession
  1. 檢查是否有其他登入工作階段:
1
# 登出所有 GUI 工作階段,然後重新透過 RDP 連線
  1. 編輯 /etc/xrdp/startwm.sh,在檔案開頭加入:
1
2
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR

問題二:無法連線,連線被拒絕

症狀:顯示「無法連線至遠端電腦」

解決方案

  1. 確認 xrdp 服務正在執行:
1
sudo systemctl status xrdp
  1. 確認防火牆已開放 3389 連接埠:
1
sudo ufw status
  1. 確認 xrdp 正在監聽:
1
sudo netstat -tlnp | grep 3389

問題三:鍵盤配置錯誤

症狀:某些按鍵輸入錯誤的字元

解決方案

重新產生鍵盤對應檔:

1
2
cd /etc/xrdp
sudo xrdp-genkeymap km-0409.ini

問題四:剪貼簿無法使用

症狀:無法在本機與遠端之間複製貼上

解決方案

  1. 確認 channel_code=1 已設定在 /etc/xrdp/xrdp.ini

  2. 確認 xrdp-chansrv 正在執行:

1
ps aux | grep chansrv
  1. 重新啟動 xrdp 服務:
1
sudo systemctl restart xrdp

問題五:連線速度緩慢

症狀:遠端桌面反應遲緩

解決方案

  1. 降低色彩深度(如前述)
  2. 使用 XFCE 桌面環境
  3. 停用桌面特效
  4. 在客戶端選擇較低的連線品質設定

問題六:登入時顯示「Authentication failed」

症狀:輸入正確密碼仍無法登入

解決方案

  1. 確認使用者帳號存在且密碼正確:
1
sudo passwd <username>
  1. 檢查 /var/log/xrdp-sesman.log 取得詳細錯誤資訊:
1
sudo tail -50 /var/log/xrdp-sesman.log

安全性建議

1. 變更預設連接埠

編輯 /etc/xrdp/xrdp.ini,將連接埠改為非標準值:

1
port=13389

別忘了更新防火牆規則:

1
2
sudo ufw deny 3389/tcp
sudo ufw allow 13389/tcp

2. 限制來源 IP

使用防火牆限制可連線的 IP 位址:

1
sudo ufw allow from 192.168.1.0/24 to any port 3389

3. 使用 SSH 通道

透過 SSH 建立加密通道,再連接 RDP:

1
2
# 在客戶端執行
ssh -L 3389:localhost:3389 user@server

然後使用 RDP 連線至 localhost:3389

4. 啟用 Fail2ban

安裝並設定 Fail2ban 防止暴力破解:

1
sudo apt install fail2ban -y

建立 xrdp 的 jail 設定:

1
sudo nano /etc/fail2ban/jail.local

加入以下內容:

1
2
3
4
5
6
7
[xrdp]
enabled = true
port = 3389
filter = xrdp
logpath = /var/log/xrdp-sesman.log
maxretry = 3
bantime = 3600

總結

透過本文的步驟,您已經成功在 Ubuntu 22.04 上建置了一個功能完整的 RDP 伺服器。xrdp 提供了一個便利的方式讓 Windows 使用者能夠輕鬆連線至 Linux 主機,無需額外安裝客戶端軟體。

請記得定期更新系統與 xrdp 套件,以確保安全性。如果在生產環境中使用,強烈建議實施本文提到的安全性建議,包括變更預設連接埠、限制來源 IP、以及啟用 Fail2ban 等措施。

如有任何問題,歡迎查閱 xrdp 官方文件 或在社群中尋求協助。

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy