You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu系统下XRDP连接Active Directory登录失败问题

Ubuntu系统下XRDP连接Active Directory登录失败问题

首先明确回答你的问题:XRDP对本地用户和AD(通过sssd-ad管理)用户的处理确实存在差异,核心在于认证机制和会话环境配置的不同,不过完全可以通过调整配置解决这个问题。

先还原下你的场景:本地登录时AD和本地用户都正常,但XRDP只允许本地用户登录,AD用户会弹出如下错误:

connecting to sesman ip 127.0.0.1 port 3350
sesman connect ok
sending login info to session manager, please wait...
login failed for display 0

下面是一步步的解决方法:

1. 调整XRDP的PAM认证配置

XRDP默认的PAM规则没有适配AD用户的认证路径,需要修改/etc/pam.d/xrdp-sesman文件:
打开终端执行编辑命令:

sudo nano /etc/pam.d/xrdp-sesman

在文件中添加或调整以下两行(建议放在文件靠前的位置,确保优先使用sssd认证):

auth    sufficient      pam_sss.so
account sufficient      pam_sss.so

保存退出(Ctrl+O,回车,Ctrl+X)。

2. 确保AD用户拥有XRDP登录权限

如果系统有访问控制配置,需要明确允许AD用户登录:
编辑/etc/security/access.conf

sudo nano /etc/security/access.conf

添加一行允许AD用户组登录的规则(替换your-domain为你的实际AD域名):

+ : @your-domain\\domain users : ALL

保存退出。

3. 配置AD用户的家目录(可选但重要)

很多AD用户默认没有自动创建家目录,XRDP会话需要读写家目录才能正常启动,所以要确保家目录存在且权限正确:

  • 编辑/etc/sssd/sssd.conf文件,找到对应AD域的配置段(比如[domain/your-domain]),添加:
create_homedir = True
  • 重启sssd服务使配置生效:
sudo systemctl restart sssd

4. 重启XRDP相关服务

所有配置修改完成后,重启XRDP和会话管理服务:

sudo systemctl restart xrdp
sudo systemctl restart xrdp-sesman

为什么会有这个差异?

本地用户的认证依赖系统自带的pam_unix模块,XRDP默认配置已经支持;而AD用户的认证是通过sssd提供的pam_sss模块,XRDP默认没有把这个模块加入认证链,导致无法验证AD用户身份。另外AD用户的会话环境(比如家目录、环境变量)也需要额外配置,不像本地用户有默认的系统配置兜底。

如果还是失败,可以查看/var/log/xrdp-sesman.log/var/log/sssd/sssd.log日志,里面会有具体的错误提示,方便进一步排查。

备注:内容来源于stack exchange,提问作者castlepancake

火山引擎 最新活动