WSL(非WSL2)下Ubuntu 20.04 LTS远程桌面连接xrdp崩溃无法进入XFCE桌面
解决WSL1 Ubuntu 20.04 xrdp连接后闪退问题
核心原因
从你提供的xrdp.log可以看到,连接流程到X11会话启动阶段正常触发,但会话启动后立刻被清理,说明是图形会话本身启动失败,xrdp本身的连接和认证流程没有问题。
分步修复操作
- 先获取桌面启动的真实报错
直接查看用户家目录下的X会话错误日志,这是定位问题的核心依据:cat ~/.xsession-errors
后续操作可以先对应这个日志的报错执行,无明确报错的情况下按下面的通用修复步骤操作。 - 修复X会话相关文件权限
90%以上的同类闪退是权限不匹配导致的,执行以下命令:
注意不要用root账号直接登录xrdp,统一使用普通用户账号验证,避免权限错乱。sudo chown -R $USER:$USER ~/.Xauthority sudo chmod 600 ~/.Xauthority sudo chown $USER:$USER ~/.xsession-errors sudo chmod 600 ~/.xsession-errors - 修正startwm.sh配置(解决之前修改不生效的问题)
之前修改全局/etc/xrdp/startwm.sh没生效,大概率是修改方式不对。正确操作:
打开/etc/xrdp/startwm.sh,不要注释末尾的默认Xsession启动行,在文件末尾的两行(test和exec那两行)之前插入一行:startxfce4
更稳妥的替代方案是直接配置用户级的会话启动文件,全局配置优先级低于用户配置:echo "startxfce4" > ~/.xsession chmod +x ~/.xsession - 修复Ubuntu 20.04 Polkit权限拦截问题
Ubuntu 20.04默认的Polkit规则会阻止非本地控制台用户启动图形会话,添加以下规则放行:sudo tee /etc/polkit-1/localauthority.conf.d/02-allow-colord.conf << EOF polkit.addRule(function(action, subject) { if ((action.id == "org.freedesktop.color-manager.create-device" || action.id == "org.freedesktop.color-manager.create-profile" || action.id == "org.freedesktop.color-manager.delete-device" || action.id == "org.freedesktop.color-manager.delete-profile" || action.id == "org.freedesktop.color-manager.modify-device" || action.id == "org.freedesktop.color-manager.modify-profile") && subject.isInGroup("users")) { return polkit.Result.YES; } }); EOF - 适配WSL1的xrdp监听配置
WSL1默认的IPv6监听容易导致会话异常,强制xrdp绑定IPv4地址:
同时用sudo sed -i 's/^address=/#address=/' /etc/xrdp/xrdp.ini echo "address=0.0.0.0" | sudo tee -a /etc/xrdp/xrdp.inisudo netstat -tulpn | grep 3389确认3389端口只有xrdp进程监听,没有其他进程占用。 - 重启服务验证
所有修改完成后重启xrdp相关服务:
连接时在xrdp的登录界面,选择模块为sudo service xrdp-sesman restart sudo service xrdp restartsesman-X11rdp,不要选择其他默认模块,输入普通用户的账号密码即可正常加载桌面。
内容的提问来源于stack exchange,提问作者Sudev Suresh Sreedevi
相关产品推荐
相关产品推荐

