Rundeck通过MS LDAP(636端口)认证失败求助
解决Rundeck通过MS LDAP(636端口)认证失败的问题
1. 排查LDAPS证书信任问题
Rundeck基于Java运行,636端口的LDAPS要求Java信任MS LDAP服务器的CA证书,操作步骤:
- 导出MS LDAP服务器的CA证书:
openssl s_client -connect your-ldap-server:636 -showcerts < /dev/null | openssl x509 -outform PEM -out ms-ldap-ca.crt - 将证书导入Java信任库(默认密码为
changeit):
若不确定Rundeck使用的Java环境,可通过keytool -importcert -file ms-ldap-ca.crt -keystore $JAVA_HOME/jre/lib/security/cacerts -alias ms-ldap-caps aux | grep rundeck查看进程的Java路径。
2. 验证JAAS配置文件正确性
重点检查以下配置项(以MS AD为例):
rundeck { com.dtolabs.rundeck.jetty.jaas.JettyCachingLdapLoginModule required contextFactoryClass="com.sun.jndi.ldap.LdapCtxFactory" providerUrl="ldaps://your-ldap-server:636" bindDn="CN=绑定账号,OU=管理员组,DC=your-domain,DC=com" bindPassword="绑定账号密码" authenticationMethod="simple" userBaseDn="DC=your-domain,DC=com" userSearchFilter="(&(sAMAccountName={0})(objectClass=user))" roleBaseDn="DC=your-domain,DC=com" roleNameAttribute="cn" roleSearchFilter="(&(objectClass=group)(member={0}))" debug="true"; };
- 确保
providerUrl使用ldaps://协议而非ldap:// userSearchFilter需匹配MS AD的用户标识(通常用sAMAccountName)bindDn需使用拥有AD查询权限的账号DN
3. 测试LDAPS基础连通性
在Ubuntu服务器上直接用ldapsearch验证连接:
ldapsearch -H ldaps://your-ldap-server:636 -D "CN=绑定账号,DC=your-domain,DC=com" -w "绑定密码" -b "DC=your-domain,DC=com" "(sAMAccountName=测试用户名)"
若该命令返回用户信息,说明LDAPS链路正常;若失败,优先排查网络防火墙、证书或AD账号权限问题。
4. 开启Rundeck调试日志定位错误
在/etc/rundeck/log4j2.properties中添加调试配置:
logger.jaas.name = com.dtolabs.rundeck.jetty.jaas.JettyCachingLdapLoginModule logger.jaas.level = DEBUG
重启Rundeck服务后,查看/var/log/rundeck/service.log中的详细认证报错信息,根据错误提示(如证书不被信任、用户DN匹配失败等)针对性修复。
5. 确认配置加载与服务重启
- 检查
rundeck-config.properties中jaas.login.config是否指向正确的JAAS配置文件:jaas.login.config=/etc/rundeck/jaas-ldap.conf - 修改配置后务必重启服务:
systemctl restart rundeckd
内容的提问来源于stack exchange,提问作者DiegoMA
相关产品推荐
相关产品推荐

