CentOS7下SSSD偶发AD账号登录失败求助(含KDC加密错误)
从你提供的SSSD状态日志和krb5.conf配置来看,这个偶尔出现的AD凭证登录失败问题,核心原因是Kerberos客户端(SSSD依赖)和AD域控(KDC)之间的加密类型不匹配,加上偶尔的预认证协商故障,具体拆解如下:
问题根源分析
- 日志里的
KDC has no support for encryption type明确说明:SSSD在请求Kerberos票据时,使用了AD域控未启用的加密算法。AD默认支持的加密类型通常是AES-256、AES-128、RC4-HMAC,如果你没在krb5.conf里指定加密类型优先级,客户端可能会尝试一些AD未开启的算法(比如较新的AES-GCM系列,或过时的DES变体),偶尔协商失败就会触发登录问题。 Preauthentication failed错误则可能和AD账号的预认证设置、域控的预认证策略波动有关——比如某些场景下,客户端发送的预认证数据不符合域控要求,导致票据请求被拒绝。- 至于su切换普通账号后登录恢复,大概率是因为su操作触发了SSSD重新同步本地缓存的AD凭据,或者强制使用了缓存中的有效票据,绕过了当时的Kerberos协商故障。
调试与解决建议
1. 强制Kerberos使用AD兼容的加密类型
修改/etc/krb5.conf,在[libdefaults]段添加加密类型的强制配置,确保只使用AD支持的算法:
[libdefaults] dns_lookup_realm = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false default_ccache_name = KEYRING:persistent:%{uid} default_realm = CO.LOCAL # 新增:指定AD兼容的加密类型优先级 default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 rc4-hmac default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 rc4-hmac permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 rc4-hmac
保存后重启SSSD并清理缓存:
systemctl restart sssd sss_cache -E
2. 优化SSSD的Kerberos配置
编辑/etc/sssd/sssd.conf(确保文件权限为600),在[domain/co.local]段添加以下配置增强协商稳定性:
[domain/co.local] # 确保使用加密票据 krb5_encrypted_tickets = true # 启用FAST预认证,提升兼容性与安全性 krb5_use_fast = safe # 指定AD支持的预认证类型 krb5_preauth_types = encrypted-challenge, rsa-sha2-512, rsa-sha2-256 # 可选:缩短缓存超时,避免旧凭据干扰 cache_credentials = true entry_cache_timeout = 3600
修改后重启SSSD服务。
3. 启用SSSD详细调试日志追踪偶发故障
因为问题是间歇性的,需要开启高等级日志捕获故障时的完整过程:
在/etc/sssd/sssd.conf的全局段和域段都设置调试级别:
[sssd] services = nss, pam, ssh config_file_version = 2 domains = co.local debug_level = 9 [domain/co.local] # 保留原有配置,新增或修改调试级别 debug_level = 9
重启SSSD后,日志会输出到/var/log/sssd/目录(比如sssd_co.local.log、sssd_pam.log)。下次出现登录失败时,立即查看这些日志,就能定位到具体是哪个加密类型被拒绝,或预认证过程中哪一步出了问题。
4. 检查AD端配置(若有权限)
- 确认AD域控的Kerberos加密策略,确保AES-256、AES-128、RC4-HMAC已启用(AD默认开启,但可能被修改)。
- 排查出现问题的AD账号,确保未勾选“不要求Kerberos预认证”选项(在AD用户属性的「账户」标签页中)。
5. 排查网络稳定性
偶尔的网络丢包/延迟也可能导致Kerberos协商失败,可以持续监控客户端到AD域控的连通性,比如测试KDC服务端口(UDP/TCP 88)的连通性,排查是否有间歇性丢包。
内容的提问来源于stack exchange,提问作者lampShadesDrifter
相关产品推荐
相关产品推荐

