我是基於ChatGPT-turbo-3.5實現的AI助手,在此網站上負責整理和概括文章

這篇文章介紹了如何在Linux上安裝和配置Xrdp服務器,以實現類似Windows遠端桌面的功能。Xrdp是一個開源的微軟遠端桌面協定的實現,能夠提供和RDP一致的遠端桌面體驗。文章分步解釋了安裝桌面環境、安裝Xrdp、進階設定、連線至主機和疑難排解等步驟,並提供了在KDE桌面環境下常見問題的解決方法。透過Xrdp,用戶可以在Linux上實現遠端桌面控制,提升工作效率和便利性。文章強調了在使用Xrdp時要注意網絡安全,避免遠端連接騙局,並祝願讀者成功設置並享受Linux主機的新功能。

對,你沒聽錯,我們平常在 Windows 上用的遠端桌面在 Linux 原來也能通過一些插件實現。到底是什麼插件如此強大呢?這裏便不多賣關子了

今天就和大家聊聊如何在 Linux 安裝和配置 Xrdp 服務器,以及一些可能會遇到的問題和解決方法

# 什麼是 Xrdp?

顧名思義,Xrdp 是一個微軟 (Microsoft) 遠端桌面協定(RDP)的開源實現,至今已有超過 20 多年歷史。能夠提供一個在功能還是兼容性方面和 RDP 一致的遠端桌面體驗。

它允許你透過圖形介面控制遠端系統。你可以透過 RDP 協定登入遠端機器,並且創建一個真實的桌面會話,整體上就像你登入自己的電腦一樣。

# Step 1: 安裝

# 桌面環境

大部份 Linux 主機通常並沒有預先安裝桌面環境。因此在繼續前,我們需要先給主機安裝一個桌面環境 (Desktop Environment,俗稱 DE),用作 Xrdp 的後端

通常像 Ubuntu Debian 這類 distro 的 Source repo 中有幾個 DE 可選,例如 XFCE 、 GNOME 等。博主這邊打算安裝 KDE Plasma

sudo apt-get install kde-plasma-desktop

完成後便可以開始裝 Xrdp 了

# Xrdp

我們首先在 terminal 中輸入以下指令

sudo apt-get install xrdp

接着分別更改 /etc/xrdp/xrdp.ini

sudo sed -e 's/^new_cursors=true/new_cursors=false/g' \
           -i /etc/xrdp/xrdp.ini

~/.xsession 裏的參數,像醬

echo "/usr/bin/startplasma-x11" > ~/.xsession
D=/usr/share/plasma:/usr/local/share:/usr/share:/var/lib/snapd/desktop
C=/etc/xdg/xdg-plasma:/etc/xdg
C=${C}:/usr/share/kubuntu-default-settings/kf5-settings
cat <<EOF > ~/.xsessionrc
export XDG_SESSION_DESKTOP=KDE
export XDG_DATA_DIRS=${D}
export XDG_CONFIG_DIRS=${C}
EOF

如果你使用的版本是 Ubuntu 20 或以上,便需要提供憑證存取權給 Xrdp 使用者以確保 Xrdp 能夠正常運作

sudo adduser xrdp ssl-cert

然後在 systemctl 中啟用 xrdp ,讓其在我們每次去開機時自動啟動

sudo systemctl enable xrdp

如果你有啟用防火牆的話,可以允許 Xrdp 來自某個 IP 位置,或某個 IP 範圍的訪問 (CIDR),這邊博主以 ufw 為例

sudo ufw allow from <YOUR IP OR IP RANGE IN CIDR> to any port 3389

基於安全考慮,極度不建議直接用 sudo ufw allow 3389 來允許從所有地方訪問

最後輸入以下指令來重新啟動 Xrdp,讓變更生效

sudo systemctl restart xrdp

這樣便完成 Xrdp 的基本安裝了

# Optional 2: 進階設定

# 更改默認端口號 (Port)

我們先打開 /etc/xrdp/xrdp.ini

sudo nano /etc/xrdp/xrdp.ini

然後在裏面找到 port=3389

[Globals]
; xrdp.ini file version number
ini_version=1
; fork a new process for each incoming connection
fork=true
; ports to listen on, number alone means listen on all interfaces
; 0.0.0.0 or :: if ipv6 is configured
; space between multiple occurrences
; ALL specified interfaces must be UP when xrdp starts, otherwise xrdp will fail to start
;
; Examples:
;   port=3389
;   port=unix://./tmp/xrdp.socket
;   port=tcp://.:3389                           127.0.0.1:3389
;   port=tcp://:3389                            *:3389
;   port=tcp://<any ipv4 format addr>:3389      192.168.1.1:3389
;   port=tcp6://.:3389                          ::1:3389
;   port=tcp6://:3389                           *:3389
;   port=tcp6://{<any ipv6 format addr>}:3389   {FC00:0:0:0:0:0:0:1}:3389
;   port=vsock://<cid>:<port>
port=3389
; 'port' above should be connected to with vsock instead of tcp
; use this only with number alone in port above
; prefer use vsock://<cid>:<port> above
use_vsock=false
.
.
.

並把它更改為你想要且未被佔用的端口

; Examples:
;   port=3389
;   port=unix://./tmp/xrdp.socket
;   port=tcp://.:3389                           127.0.0.1:3389
;   port=tcp://:3389                            *:3389
;   port=tcp://<any ipv4 format addr>:3389      192.168.1.1:3389
;   port=tcp6://.:3389                          ::1:3389
;   port=tcp6://:3389                           *:3389
;   port=tcp6://{<any ipv6 format addr>}:3389   {FC00:0:0:0:0:0:0:1}:3389
;   port=vsock://<cid>:<port>
port=< YOUR PORT>

Ctrl + X ,輸入 y / yes 並按 Enter 儲存

最後輸入以下指令來重新啟動 Xrdp,讓變更生效

sudo systemctl restart xrdp

如果你有啟用防火牆的話,記得更新一下允許新的端口。否則無法連線喔~

# Step 3: 連線至主機

現在,我們可以先測試一下 Xrdp 是否正常運作。

  1. 如連線至 Windows 般打開遠端桌面 (Remote Desktop) 並填寫主機 IP 或域名,然後按「連接」 (Connect)
  1. 假如出現憑證警告,按「是」 (Yes) 繼續
  1. 輸入目標主機的用戶名稱 (Username) 和密碼 (Password) ,完成後請按 Login
  1. 倘若沒問題的話,恭喜你!你已經成功安裝和設置 Xrdp 了,盡情享受吧!

假若無法連上主機,或是連接後在某部份出現異常的話,該怎樣辦?沒關係。請繼續看下去

# 疑難排解

# 無法識別主機

大多數屬於網絡問題,請檢查

  • Xrdp 是否已啟用並正常運行
  • 防火牆是否已允許端口 (Port)

# 輸入憑據後按登入後即時閃退

這是一個在任何 DE 也最常遇到的問題,但解決方法也很簡單

先在 terminal 中輸入以下指令

sudo service xrdp stop

然後編輯 Xrdp 啟動腳本

sudo nano /etc/xrdp/startwm.sh

把腳本內的以下幾行

test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession

更改為

#(@obsolete)startxfce4
/usr/bin/startplasma-x11

Ctrl + X ,輸入 y / yes 並按 Enter 儲存

最後輸入以下指令來重新啟動 Xrdp 便可

sudo service xrdp start

# 在 KDE 中無法移動或調整視窗大小

我們在 terminal 中輸入以下指令

sudo service xrdp stop

並編輯 Xrdp 啟動腳本

sudo nano /etc/xrdp/startwm.sh

在腳本底下新增以下內容

#(@obsolete)killall kwin
killall kwin_x11
#(@obsolete)kwrapper kwin -replace &
kwrapper5 kwin_x11 --replace &

Ctrl + X ,輸入 y / yes 並按 Enter 儲存

最後輸入以下指令來重新啟動 Xrdp 便可

sudo service xrdp start

# KDE 內沒有桌面,只顯示黑畫面

這問題在 KDE 中也算常見,其解決方法並不複雜

先同樣地在 terminal 中輸入以下指令

sudo service xrdp stop

並編輯 Xrdp 啟動腳本

sudo nano /etc/xrdp/startwm.sh

在腳本底下新增以下內容

#(@Obsolete)killall plasma-desktop
#(@Obsolete)kstart plasma-desktop
#(@Obsolete)killall plasmashell #to stop it
#(@Obsolete)kstart plasmashell #to restart it
kquitapp5 plasmashell
kstart5 plasmashell

Ctrl + X ,輸入 y / yes 並按 Enter 儲存

最後輸入以下指令來重新啟動 Xrdp 便可

sudo service xrdp start

# 結語

想不到 Linux 還有這樣的連接方式啊,博主也是最近才知道.......

看到這裏,想必各位應該 GET 到一些新技能了吧

不過在這裏提醒大家,在享受 Xrdp 帶來的便利時,也請謹記做好網絡保安。

現時遠端連接騙局極為普遍,切忌讓其他人士肆意存取你的主機。相信沒人願意成為下一位被騙的受害者吧 XD

最後,希望大家設置成功,為你的 Linux 主機打開新的大門!

此文章已被閱讀 更新於

請我喝[茶]~( ̄▽ ̄)~*

Yuzuki Shimotsuki 微信支付

微信支付

Yuzuki Shimotsuki 支付寶

支付寶