引言
xrdp 是一个开源的 RDP 服务器,允许你使用 Windows 自带的远程桌面客户端连接到 Linux 系统。在 CentOS 上安装和配置 xrdp 后,Windows 用户即可通过远程桌面连接访问 CentOS 桌面环境。
基本概念
XRDP 提供基于 RDP(Microsoft 远程桌面协议)的图形登录功能,支持来自 FreeRDP、rdesktop、NeutrinoRDP 以及 Microsoft 远程桌面客户端(适用于 Windows、macOS、iOS 和 Android)等各类客户端的连接。
安装桌面软件环境
首先需要为 CentOS 安装图形桌面环境,这里以 X Window System 和 MATE Desktop 为例。
- 安装 X Window System:
yum groups install "X Window System" - 安装 MATE Desktop:
yum groups install "MATE Desktop" - 查看已安装的桌面环境组:
yum grouplist - 设置系统默认以图形界面启动:
systemctl set-default graphical.target - 重启服务器使配置生效:
reboot
重启后,可通过云服务器控制台的管理终端验证桌面环境是否正常启动。
安装与配置 XRDP
1. 切换 root 用户
sudo su - root
2. 安装 EPEL 库
检查是否已安装 EPEL 库:
rpm -qa | grep epel
若未安装,则执行:
yum install epel-release
3. 安装 xrdp 与 VNC 服务
xrdp 最终会自动启用 VNC,因此必须安装 tigervnc-server,否则 xrdp 无法正常工作。
yum install xrdp
yum install tigervnc-server
为 root 用户设置 VNC 密码:
vncpasswd root
4. 修改 xrdp 最大连接数(可选)
编辑 /etc/xrdp/xrdp.ini,默认最大连接数为 32,可根据需要调整:
max_bpp=32
5. 防火墙设置
确保两台机器可以相互访问。若在局域网内测试,可直接关闭防火墙:
systemctl stop firewalld.service
systemctl disable firewalld.service
或者不关闭防火墙,仅开放 3389 端口:
firewall-cmd --permanent --zone=public --add-port=3389/tcp
firewall-cmd --reload
6. 关闭 SELinux
查看 SELinux 状态:
sestatus
临时关闭:
setenforce 0
永久关闭:编辑 /etc/selinux/config,设置 SELINUX=disabled。
7. 启动 xrdp 服务
systemctl start xrdp
systemctl enable xrdp
停止服务:
systemctl stop xrdp
检查端口监听情况:
netstat -antup | grep xrdp
查看服务状态:
systemctl status xrdp
远程连接测试
在 Windows 中打开远程桌面连接(运行 mstsc),输入 CentOS 的 IP 地址,选择 CentOS 上已有的用户名,然后输入对应的 VNC 密码即可登录。连接成功后,即可看到与物理主机一致的桌面界面。
使用 MobaXterm 连接
MobaXterm 可替代 Windows 自带的 mstsc,支持剪贴板共享,方便在 Windows 与 CentOS 之间复制粘贴。打开 Session -> RDP,输入主机 IP、用户名,端口默认 3389,点击 OK 后输入密码登录。如需高清全屏显示,可在会话的 Advanced -> Display 中设置合适的分辨率(如 1920×1080)。
注销操作
直接关闭远程桌面客户端并不会注销远程会话,用户仍会占用 CentOS 资源。建议在不再使用时执行注销操作,以减少远程主机的开销。
常见问题解决
1. 连接后黑屏或立即断开
创建 xrdp 启动脚本 /etc/xrdp/startwm.sh,内容如下:
#!/bin/sh
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
if [ -r /etc/profile ]; then
. /etc/profile
fi
if [ -r ~/.bash_profile ]; then
. ~/.bash_profile
else
if [ -r ~/.bash_login ]; then
. ~/.bash_login
else
if [ -r ~/.profile ]; then
. ~/.profile
fi
fi
fi
exec gnome-session
设置执行权限:
sudo chmod +x /etc/xrdp/startwm.sh
2. 音频重定向
安装音频支持:
sudo yum install pulseaudio -y
3. 剪贴板共享
确保安装了相关插件:
sudo yum install xrdp-pulseaudio-installer -y
4. 多用户支持
xrdp 默认支持多用户同时登录,每个用户会获得独立的会话。
5. 自定义端口
编辑 /etc/xrdp/xrdp.ini,将 port=3389 改为其他端口(如 3390),然后重启服务并更新防火墙规则:
sudo systemctl restart xrdp
sudo firewall-cmd --permanent --add-port=3390/tcp
sudo firewall-cmd --reload
管理命令
# 重启 xrdp 服务
sudo systemctl restart xrdp
# 停止 xrdp 服务
sudo systemctl stop xrdp
# 查看服务状态
sudo systemctl status xrdp
# 查看日志
sudo tail -f /var/log/xrdp-sesman.log
sudo tail -f /var/log/xrdp.log
安全建议
- 使用强密码。
- 考虑更改默认端口。
- 使用防火墙限制访问 IP。
- 或通过 SSH 隧道连接:在 Windows 上使用 PuTTY 建立隧道,或将以下配置添加到本地
~/.ssh/config:Host centos-rdp HostName your_centos_ip User your_username LocalForward 33389 localhost:3389然后连接
localhost:33389。
xrdp 提供了一个相对稳定和兼容的解决方案,让 Windows 用户能够无缝地远程访问 CentOS 桌面环境。
