如何在Linux中配置具体的远程桌面访问权限
Ubuntu 22.04 默认走的是 Wayland,但 xrdp 目前只认 Xorg,这也是远程登录时频繁出现黑屏、闪退、认证失败的根源。要把这件事处理顺,关键就几步:先切换到 Xorg 会话,再通过 ~/.xsession 明确指定桌面环境,比如 xfce4-session;同时放通 3389
Ubuntu 22.04 默认走的是 Wayland,但 xrdp 目前只认 Xorg,这也是远程登录时频繁出现黑屏、闪退、认证失败的根源。要把这件事处理顺,关键就几步:先切换到 Xorg 会话,再通过 ~/.xsession 明确指定桌面环境,比如 xfce4-session;同时放通 3389 端口,并确认用户账号具备有效的 shell,且家目录可正常写入。

为什么直接装 xrdp 后连不上?黑屏/闪退/认证失败是常态
别以为装好 xrdp 就万事大吉了。Ubuntu 22.04 及以上版本默认启用的是 Wayland,可 xrdp 支持的只有 Xorg;CentOS/RHEL 8 及以上版本默认又不自带桌面环境;Debian 这边通常也不会预装 xfce4 或 gnome-session。这些看似不起眼的默认设置,往往正是连接后黑屏,或者刚连上就立刻断开的根源。
- 先确认当前会话协议:
loginctl show-session $(loginctl | grep current | awk '{print $1}') -p Type,输出Type=x11才安全 - 若为
wayland,需在登录界面点击用户头像旁的齿轮图标,手动选 “Ubuntu on Xorg” 或 “GNOME on Xorg” - 新用户首次连接前,必须确保其家目录下存在有效桌面入口文件,否则
xrdp会 fallback 到空 session
~/.xsession 和 /etc/xrdp/startwm.sh 到底该改哪个?
优先写 ~/.xsession,它对单用户生效、优先级高于全局配置,且避免误改系统文件引发所有用户异常。
- 对 XFCE 用户:
echo "xfce4-session" > ~/.xsession,然后chmod 644 ~/.xsession - 对 GNOME 用户:
echo "exec gnome-session" > ~/.xsession(注意不是gnome-shell) - 如果用的是 KDE:
echo "startplasma-x11" > ~/.xsession - 不要直接改
/etc/xrdp/startwm.sh,除非你明确要全局统一桌面环境;改完必须sudo systemctl restart xrdp
防火墙和云厂商安全组漏掉哪一层?
本地 ufw 放行 3389/tcp 只是第一步。阿里云、腾讯云、AWS 的安全组规则是独立于系统防火墙的,且默认拒绝所有入向流量。
- 查本地防火墙状态:
sudo ufw status verbose,确认3389/tcp在 “Anywhere” 规则中 - 云服务器必须额外在控制台打开安全组:源 IP 设为
0.0.0.0/0(或限制为你的办公 IP),协议 TCP,端口3389 - 某些发行版(如 CentOS 8+)默认用
firewalld,命令是:sudo firewall-cmd --permanent --add-port=3389/tcp && sudo firewall-cmd --reload
如何让非 root 用户也能远程桌面登录?
xrdp 默认允许所有本地用户登录,但前提是该用户有 shell、家目录可写、且没被 /etc/nologin 或 /etc/shadow 中的 * 锁定。
- 新建用户后务必设置密码:
sudo passwd username,仅adduser不设密码会导致认证失败 - 检查用户 shell:
getent passwd username | cut -d: -f7,必须是/bin/bash或/bin/sh,不能是/usr/sbin/nologin - 若用 SSH 密钥登录的用户想同时用 RDP,需确保其
~/.xsession存在且权限正确(644),否则xrdp拒绝加载 - root 用户默认被
xrdp禁用,如真需要,得编辑/etc/xrdp/xrdp.ini,把allow_root_login=false改成true,再重启服务
journalctl -u xrdp -f 实时日志,里面几乎每条报错都对应一个具体动作。 
































