在Windows系统中,RDP是常用的远程桌面协议,操作逻辑符合大多数用户的使用习惯。如果需要在Windows设备上远程访问CentOS服务器,通过部署xrdp服务可以让CentOS支持RDP连接,无需额外学习其他远程工具的操作方式。

环境准备
开始部署前需要确认当前CentOS服务器的系统版本,本文示例基于CentOS 7和CentOS 8两个主流版本,不同版本的软件包安装命令略有差异。同时需要确保服务器已经配置了稳定的网络,并且拥有root或者具备sudo权限的普通用户账号。
安装桌面环境
CentOS默认最小安装没有图形化桌面环境,RDP连接需要依赖桌面环境才能正常显示操作界面,首先需要根据系统版本安装对应的桌面组件。
CentOS 7安装桌面环境
执行以下命令安装GNOME桌面:
# 安装GNOME桌面环境 sudo yum groupinstall "GNOME Desktop" -y # 设置默认启动为图形化界面 sudo systemctl set-default graphical.target
CentOS 8安装桌面环境
CentOS 8使用dnf作为包管理工具,执行以下命令安装桌面:
# 安装GNOME桌面环境 sudo dnf groupinstall "Server with GUI" -y # 设置默认启动为图形化界面 sudo systemctl set-default graphical.target
安装xrdp服务
xrdp是一个开源的RDP服务器实现,能够让Linux系统支持RDP协议连接,安装完成后需要启动服务并设置开机自启。
CentOS 7安装xrdp
# 安装epel源,xrdp包在epel仓库中 sudo yum install epel-release -y # 安装xrdp服务 sudo yum install xrdp -y # 启动xrdp服务 sudo systemctl start xrdp # 设置开机自启 sudo systemctl enable xrdp
CentOS 8安装xrdp
# 安装epel源 sudo dnf install epel-release -y # 安装xrdp服务 sudo dnf install xrdp -y # 启动xrdp服务 sudo systemctl start xrdp # 设置开机自启 sudo systemctl enable xrdp
配置防火墙规则
RDP协议默认使用3389端口,需要开放该端口的入站流量,否则外部设备无法连接到服务器的xrdp服务。
firewalld防火墙配置
如果服务器使用firewalld作为防火墙管理工具,执行以下命令开放端口:
# 开放3389端口 sudo firewall-cmd --permanent --add-port=3389/tcp # 重新加载防火墙规则 sudo firewall-cmd --reload # 验证端口是否开放成功 sudo firewall-cmd --list-ports
iptables防火墙配置
如果服务器使用iptables作为防火墙管理工具,执行以下命令:
# 开放3389端口入站规则 sudo iptables -A INPUT -p tcp --dport 3389 -j ACCEPT # 保存iptables规则,不同系统保存命令可能有差异 sudo service iptables save
Windows端发起RDP连接
完成服务器端配置后,在Windows设备上打开远程桌面连接工具,输入CentOS服务器的IP地址,点击连接按钮,在弹出的认证界面输入CentOS系统的用户名和密码,即可成功进入图形化桌面。
安全优化建议
默认的RDP配置存在一定安全风险,建议通过以下方式提升访问安全性:
- 修改xrdp默认端口,避免被批量扫描工具探测,修改
/etc/xrdp/xrdp.ini文件中的port字段,将3389改为其他高位端口,修改后重启xrdp服务生效 - 限制允许访问RDP服务的IP地址,在防火墙规则中仅允许信任的IP段访问对应端口
- 避免使用root账号直接进行RDP登录,创建普通用户用于远程操作,需要管理员权限时再切换
- 定期更新xrdp和系统组件,修复已知的安全漏洞
常见问题排查
如果连接失败,可以按照以下步骤排查:
- 检查xrdp服务是否正常运行,执行
systemctl status xrdp查看服务状态 - 检查3389端口是否被监听,执行
netstat -tlnp | grep 3389确认端口监听情况 - 检查防火墙规则是否生效,确认端口已经正确开放
- 查看xrdp日志文件
/var/log/xrdp.log,根据日志中的错误提示定位问题
注意:如果服务器是云厂商提供的实例,还需要在云服务器的安全组规则中开放对应的RDP端口,否则即使服务器本地防火墙配置正确,也无法从外部访问。