必须安装xrdp服务并确保Linux端运行图形桌面环境;通过loginctl确认会话类型为x11或wayland,否则需先安装桌面环境;再用ip命令获取局域网IP以便Windows远程连接。

要在Windows电脑上直接用系统自带的“远程桌面连接”工具访问局域网内Linux主机的图形化桌面,必须让Linux端运行一个兼容RDP协议的服务——xrdp就是专为此设计的开源RDP服务器,它不依赖VNC或额外客户端,且能复用Windows原生mstsc.exe。
确认Linux端已就绪:桌面环境与网络基础
先确保Linux主机已安装图形桌面环境(如GNOME、XFCE或KDE),xrdp无法在纯命令行系统上启动图形会话。Ubuntu默认带桌面,但最小化安装的CentOS/RHEL通常没有,需手动补全。
执行loginctl show-session $(loginctl | grep -o 'session-[0-9]*' | head -1) -p Type,若输出Type=x11或Type=wayland,说明当前用户会话是图形化的;若报错或返回Type=tty,则必须先安装桌面环境。
检查局域网IP:在Linux终端运行ip -4 addr show | grep -oP '(?,记下这个IPv4地址——<strong>【Windows必须和此IP在同一网段才能直连,跨子网或NAT后需额外端口映射】</strong>。
安装并启用xrdp服务(按发行版区分)
方法一:Ubuntu/Debian系(含Linux Mint、Pop!_OS)
打开终端,依次执行:
sudo apt update && sudo apt install xrdp xorgxrdp -y
sudo systemctl enable --now xrdp
这一步会同时启动服务并设为开机自启;xorgxrdp包必不可少,缺它会导致登录后黑屏或立即断开。
方法二:CentOS/RHEL 8+ / Rocky / AlmaLinux
先启用EPEL源,再安装:
sudo dnf install epel-release -y && sudo dnf install xrdp -y
sudo systemctl enable --now xrdp
注意:RHEL/CentOS 7及更早版本使用yum而非dnf,且需额外安装xorgxrdp(可能需从EPEL-testing启用)。
放行防火墙端口并验证服务状态
第一步:开放TCP 3389端口
Ubuntu/Debian用ufw:sudo ufw allow 3389/tcp
CentOS/RHEL用firewalld:sudo firewall-cmd --permanent --add-port=3389/tcp && sudo firewall-cmd --reload
第二步:确认xrdp正在监听
运行sudo ss -tlnp | grep ':3389',应看到xrdp进程绑定在*:3389;若无输出,说明服务未真正运行,需检查sudo systemctl status xrdp中的错误日志。
第三步:检查SELinux(仅RHEL系)
若SELinux处于enforcing模式,需临时设为permissive测试:sudo setenforce 0;若此时连接成功,则需执行sudo ausearch -m avc -ts recent | audit2why定位策略冲突,再用audit2allow生成模块修复——【跳过此步可能导致连接认证通过但桌面无法加载】。
Windows端发起连接并完成首次登录
第一步:调出远程桌面客户端
在Windows按Win + R,输入mstsc,回车。
第二步:填写目标地址
在“计算机”栏粘贴Linux主机的局域网IP(例如192.168.1.25),点击“连接”。
第三步:输入凭据
用户名填Linux系统的**本地账户名**(不是root,除非你明确配置了root允许图形登录),密码填对应密码;勾选“记住我的凭据”可省去下次输入。
第四步:处理首次连接警告
若弹出证书不可信提示,点击“是”继续——xrdp默认使用自签名TLS证书,这是正常现象,不影响功能。
第五步:选择会话类型(关键!)
登录窗口出现后,**不要直接点OK**;在下方“Session”下拉菜单中,选择Xorg(非VNC、NeutrinoRDP或RDP)。选错会导致黑屏、卡死或秒退;Xorg是目前最稳定兼容主流桌面的选项。


















