CentOS 7 XRDP 遠端桌面

CentOS

在 CentOS Linux 上使用 VNC 時常出現黑屏、顯示不完全、畫面延遲等其它奇怪問題嗎?馬上改換 XRDP 即可解決所有問題,而且直接使用 Windows 預設提供的 "遠端桌面連線" 即可與 Linux 遠端連線,並支援遠端雙 / 多螢幕。

安裝

yum 預設沒有 XRDP,須先更新 yum 套件資料庫,到 EPEL 官網 找到 The newest version of ‘epel-release’ for EL7,點擊打開新頁面,複製 epel-release-7-5.noarch 的連結(數字可能會有變化,當前版本是 7.5)貼上後更新:

rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

安裝 XRDP,因為 XRDP 最終會自動啟用 VNC ,因此也必須安裝 tigervnc-server:

yum install xrdp tigervnc-server

啟用

啟用並開機自動啟動 XRDP 服務,未來只要用遠端連線連到這部主機,系統就會自動啟動 VNC 本機的 Port 5910~5920,接著即可透過 RDP((Remote Desktop Protocol)協定取得 VNC 的畫面:

systemctl start xrdp
systemctl enable xrdp

XRDP 遠端桌面的 Port 3389,但是它會再連到本機的 Port 3350 去喚醒一個 VNC 連線:

netstat -antup | grep xrdp
tcp        0      0 127.0.0.1:3350          0.0.0.0:*               LISTEN      4488/xrdp-sesman
tcp        0      0 0.0.0.0:3389            0.0.0.0:*               LISTEN      4490/xrdp
tcp        0      0 127.0.0.1:54272         127.0.0.1:5910          ESTABLISHED 4530/xrdp
tcp        0      0 61.xxx.xxx.59:3389      61.xxx.xxx.60:61347     ESTABLISHED 4530/xrdp

防火牆

允許 RDP Port 3389,並重新載入設定:

firewall-cmd --permanent --zone=public --add-port=3389/tcp
firewall-cmd –reload

問題排除

因 SELinux 造成 XRDP 無法正常啟用:

systemctl status xrdp
● xrdp.service - xrdp daemon
   Loaded: loaded (/usr/lib/systemd/system/xrdp.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 一 2017-09-18 09:16:42 CST; 1min 12s ago
     Docs: man:xrdp(8)
           man:xrdp.ini(5)
  Process: 731 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS --nodaemon (code=exited, status=203/EXEC)
 Main PID: 731 (code=exited, status=203/EXEC)
 
 9月 18 09:16:42 kvm.hotel-tainan.com.tw systemd[1]: Started xrdp daemon.
 9月 18 09:16:42 kvm.hotel-tainan.com.tw systemd[1]: Starting xrdp daemon...
 9月 18 09:16:42 kvm.hotel-tainan.com.tw systemd[731]: Failed at step EXEC spawning /usr/sbin/xrdp: Permission denied
 9月 18 09:16:42 kvm.hotel-tainan.com.tw systemd[1]: xrdp.service: main process exited, code=exited, status=203/EXEC
 9月 18 09:16:42 kvm.hotel-tainan.com.tw systemd[1]: Unit xrdp.service entered failed state.
 9月 18 09:16:42 kvm.hotel-tainan.com.tw systemd[1]: xrdp.service failed.

SELinux 設定:

chcon --type=bin_t /usr/sbin/xrdp
chcon --type=bin_t /usr/sbin/xrdp-sesman

再重啟觀察是否正常:

systemctl restart xrdp

測試遠端連線

執行 Windows 的遠端桌面連線,輸入伺服器 IP:

輸入系統帳、密:

登入約 5 秒左右才會顯示畫面:

雙 / 多螢幕設定

勾選《遠端工作階段使用我的所有監視器》,即可讓遠端自動對應客戶端使用的螢幕數量。

參考

在〈CentOS 7 XRDP 遠端桌面〉中有 3 則留言

發表留言