Rundeck通过PAM+sshd认证AD用户异常:日志成功但WebUI报错
Rundeck PAM+AD认证问题
环境信息
- Rundeck版本:4.10.1.20230221-1
- 安装方式:rpm
- 操作系统:Oracle Linux 8 UEKR6 - Kernel 5.4.17-2136.315.5
- 数据库:postgres v13.7
服务器已部署在NGINX后并配置TLS,此部分运行正常。
问题描述
通过Winbind+Samba将服务器加入AD域,尝试使用Rundeck自带PAM模块做外部认证(不使用LDAP)。AD用户登录WebUI时界面提示**"用户名或密码错误"**,但服务日志明确显示认证成功。
已配置内容
编辑jaas-loginmodule.conf添加PAM认证规则:
org.rundeck.jaas.jettyPamLoginModule requisite debug="true" service="sshd" supplementalRoles="readonly" storePass="true" org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required debug="true" file="/etc/rundeck/realm.properties";
日志信息
- 服务日志
/var/log/rundeck/service.log显示认证成功:
[2023-03-08T13:35:12,068] DEBUG pam.AbstractPamLoginModule - PAM authentication trying (sshd) for: jsmith [2023-03-08T13:35:12,416] DEBUG pam.AbstractPamLoginModule - PAM authentication succeeded for: jsmith
- 访问日志
/var/log/rundeck/rundeck.access.log显示跳转至错误页:
[2023-03-08T13:35:12,068] INFO web.requests "GET /user/error" [0:0:0:0:0:0:0:1] http form 303 ? [] (Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36)
疑问
是否因为AD用户不存在于Rundeck数据库中,导致认证成功却无法登录?
原因与解决方案
你的判断完全正确——Rundeck默认要求用户必须存在于内部数据库才能完成登录流程,哪怕外部PAM认证通过,若用户未在Rundeck中创建,依然会被拒绝访问。
解决步骤:
- 开启自动用户创建:修改
rundeck-config.properties文件,添加或调整以下配置:
rundeck.security.user.create.enabled=true rundeck.security.user.create.roles=readonly
此配置会让Rundeck在用户首次PAM认证成功时,自动将其添加到内部数据库,并赋予readonly初始角色(可根据需求修改角色名称)。
确认JAAS配置顺序:当前你的PAM模块在PropertyFile模块之前的顺序是正确的,无需调整;
storePass="true"参数可以保留,若不需要将密码存储到Rundeck内部也可删除,不影响自动创建用户的逻辑。重启Rundeck服务:配置修改后执行重启生效:
systemctl restart rundeckd
- 调整用户权限:若需要给AD用户更高权限,可在用户自动创建后,通过Rundeck管理员账户(如默认
admin)在WebUI中为其分配额外角色,或者直接修改rundeck.security.user.create.roles参数批量设置初始权限。
额外验证:可以在服务器上执行su - jsmith测试PAM是否能正确验证AD用户,确保Winbind的PAM配置无问题,避免后续其他认证异常。
内容的提问来源于stack exchange,提问作者s0p4L1n3
相关产品推荐
相关产品推荐

