WSL Debian xrdp 无法启动 —— 排查与修复记录
WSL Debian xrdp 无法启动 — 排查与修复记录
日期:2026-08-08
环境:Windows 11 Pro(WSL2)+ Debian trixie(13.6)+ systemd 257.13 + xrdp 0.10.1 + xorgxrdp 0.10.2
一、现象
- WSL Debian 中 xrdp 无法启动,远程桌面连不上
xrdp.service/xrdp-sesman.service状态为 inactive/var/log/xrdp.log、/var/log/xrdp-sesman.log均为 0 字节(服务从未真正运行)- 3389 / 3390 端口均无监听
二、根因
systemd-firstboot.service(First Boot Wizard)无限挂起,阻塞整个启动链。
完整因果链:
1 | |
这是 WSL2 + systemd 的已知坑。
wsl --shutdown重启无效,因为 machine-id 每次启动都被重置,firstboot 每次都触发、每次都挂起。
关键证据
| 证据 | 说明 |
|---|---|
systemctl list-jobs |
systemd-firstboot.service 一直是 start running,其余 44 个任务 waiting |
/etc/machine-id 时间戳 |
16:09、16:14 两次,均等于当次 systemd 启动时刻 —— 每次启动都被重写 |
/etc/hosts、/etc/localtime、/etc/timezone、/etc/hostname 时间戳 |
同为 16:14 —— WSL 每次启动自动重写的文件,machine-id 也被一并重置 |
/etc/hosts 内容 |
明确标注 “This file was automatically generated by WSL” |
| firstboot 服务定义 | ExecStart=systemd-firstboot --prompt-locale ... 带 4 个交互参数 |
| journal | 16:09 那次 firstboot 挂到 16:13:44 被关机 SIGTERM 杀掉;16:14 重启后又挂起 |
passwd -S root |
root 密码为锁定状态(L),认证会失败 |
附带发现
systemd-binfmt.service启动失败 —— WSL2 下 binfmt_misc 无法挂载,属已知无害现象,不影响 xrdp- 系统最终状态为
degraded,仅因 binfmt 失败,可忽略
三、解决方案
3.1 禁用 firstboot 服务(治本)
1 | |
然后在 Windows 端重启 WSL:
1 | |
重新进入 Debian 后,启动链即可走完,xrdp(已 enable)自动启动。
3.2 验证
1 | |
3.3 端口说明(3390 是有意为之)
- 全局
port=3390是为了避开 Windows 主机的 RDP 端口 3389 - 实际上 WSL2 是独立网络命名空间,内部监听 3389 不会与 Windows RDP 冲突
- 但从局域网外部直连时,3390 可避免与 Windows 自身 RDP 的端口转发规则冲突 —— 此选择合理,保留
- 连接地址:
localhost:3390
四、会话配置说明
xrdp.ini中[Xorg]段可用(lib=libxup.so),且已安装xorgxrdp- 登录界面会话类型选 Xorg 即可,无需补
[xrdp1]段(标准 [xrdp1] 需依赖 VNC 后端,未安装 tigervnc) [Xvnc]段虽存在,但因未装 VNC 后端,选择 Xvnc 会话会失败
五、开启 root 连接
检查结论:
PAM配置无需修改(/etc/pam.d/xrdp-sesman走标准common-auth,无拒绝 root 规则)- root 密码为锁定状态,需设置密码解锁
操作:
1 | |
连接(Windows):
- 远程桌面(mstsc)→
localhost:3390 - 用户名:
root,密码:刚设置的密码 - 会话类型:Xorg
若 root 登录后会话起不来,查看日志:
1 | |
兜底方案:安装 tigervnc-scraping-server,登录界面改选 Xvnc 会话。
六、常用命令速查
| 命令 | 用途 |
|---|---|
systemctl status xrdp xrdp-sesman |
查看 xrdp 服务状态 |
systemctl list-jobs |
查看是否有排队/挂起的启动任务 |
systemctl --failed |
查看失败的服务 |
ss -tlnp | grep 3390 |
查看监听端口 |
tail -50 /var/log/xrdp.log |
查看 xrdp 日志 |
tail -50 /var/log/xrdp-sesman.log |
查看会话管理器日志 |
journalctl -u systemd-firstboot |
查看 firstboot 日志 |
passwd -S root |
查看 root 密码状态(L=锁定) |
七、涉及的关键文件
| 文件 | 说明 |
|---|---|
/etc/wsl.conf |
[boot] systemd=true —— 启用 systemd |
/usr/lib/systemd/system/systemd-firstboot.service |
已 mask,不再阻塞启动 |
/etc/xrdp/xrdp.ini |
全局 port=3390;[Xorg] 会话段 |
/etc/xrdp/sesman.ini |
会话管理配置 |
/etc/pam.d/xrdp-sesman |
PAM 认证配置(无需改动) |
WSL Debian xrdp 无法启动 —— 排查与修复记录
https://bote798.top/2026/08/08/xrdp-排障记录/