# CentOS 設定外部連結XRDP
###### tags: `系統`,`Linux`
# 安裝
yum 預設沒有 XRDP,須先更新 yum 套件資料庫,到 [EPEL](https://fedoraproject.org/wiki/EPEL) 官網 找到 The newest version of ‘epel-release’ for EL8,點擊打開新頁面,複製 epel-release-8.noarch 的連結(數字可能會有變化,當前版本是 8)貼上後更新:
`yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.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`
:::warning
找不到 netstat 指令請先 yum 安裝 net-tools
:::
# 防火牆
允許 RDP Port 3389,並重新載入設定:
`firewall-cmd --permanent --zone=public --add-port=3389/tcp`
`firewall-cmd --reload`
# 測試連線
使用Microsoft Remote desktop
<img src="https://i.imgur.com/FoFIYgX.png" width=300>
1. 新增連線
<img src="https://i.imgur.com/vJC4rj9.png" width=300>
2. 設定ip & 連線資訊
- **Ip**
- <img src="https://i.imgur.com/eT8Oizn.png" width=300>
- **User Infomation**
- <img src="https://i.imgur.com/UNWHiUa.png" width=300>
3. 登入
<img src="https://i.imgur.com/CshojKi.jpg" width=300>
4. 成功
<img src="https://i.imgur.com/zKMkSmA.png" width=300>
# XRDP config
xrdp的配置文檔在`/etc/xrdp`目錄下的`xrdp.ini`和`sesman.ini`
## xrdp.ini
`vi ./etc/xrdp/xrdp.ini`
關鍵部分在globals
### **globals**
```
bitmap_cache=yes點陣圖緩存
bitmap_compression=yes 點陣圖壓縮
port=3389 監聽埠
crypt_level=low 加密程度(low為40位,high為128位,medium為雙40位)
channel_code=1 不知道是什麼
```
## sesman.ini
`vi ./etc/xrdp/sesman.ini`
### **Globals**
```
ListenAddress=127.0.0.1 監聽ip地址(默認即可)
ListenPort=3350 監聽埠(默認即可)
EnableUserWindowManager=1 1為開啟,可讓用戶自定義自己的啟動腳本
UserWindowManager=startwm.sh
DefaultWindowManager=startwm.sh
```
### **Security**
```
AllowRootLogin=1 允許root登陸
MaxLoginRetry=4 最大重試次數
TerminalServerUsers=tsusers 允許連接的用戶組(如果不存在則默認全部用戶允許連接)
TerminalServerAdmins=tsadmins 允許連接的超級用戶(如果不存在則默認全部用戶允許連接)
```
### **Sessions**
```
MaxSessions=10 最大會話數
KillDisconnected=0 是否立即關閉斷開的連接(如果為1,則斷開連接後會自動註銷)
IdleTimeLimit=0 空閒會話時間限制(0為沒有限制)
DisconnectedTimeLimit=0 斷開連接的存活時間(0為沒有限制)
```
### **Logging**
```
LogFile=./sesman.log 登陸日誌文件
LogLevel=DEBUG 登陸日誌記錄等級(級別分別為,core,error,warn,info,debug)
EnableSyslog=0 是否開啟日誌
SyslogLevel=DEBUG 系統日誌記錄等級
```