Kerberos 是一种网络认证协议,在 Linux 环境中常用于企业级认证服务。以下是 Kerberos 故障的排查步骤和方法:
# 检查KDC服务状态
systemctl status krb5kdc
systemctl status kadmin
# 检查sssd服务状态(如果使用)
systemctl status sssd
# 检查KDC端口是否开放
telnet <KDC服务器> 88
nc -zv <KDC服务器> 88
# 主要配置文件
cat /etc/krb5.conf
cat /etc/krb5.keytab
常见问题:
- 检查[realms]
和[domain_realm]
部分配置是否正确
- 确保default_realm
设置正确
- 检查KDC和admin_server指向正确的服务器
# Kerberos对时间同步要求严格
date
ntpstat
chronyc sources
# 尝试获取票据
kinit <用户名>
klist # 查看票据
# KDC日志
journalctl -u krb5kdc -f
tail -f /var/log/krb5kdc.log
# 客户端日志
tail -f /var/log/secure
# 解决方案:同步时间
sudo ntpdate <NTP服务器>
# 或
sudo chronyc -a makestep
/etc/krb5.conf
中的KDC服务器地址# 重新生成keytab
kadmin -p admin -q "ktadd -k /etc/krb5.keytab <服务主体>"
kadmin -p admin
# 在kadmin提示符下
listprincs # 列出所有主体
getprinc <用户名> # 查看主体详情
# 使用tcpdump捕获Kerberos流量
tcpdump -i eth0 -s0 -w kerberos.pcap port 88
# 以调试模式运行kinit
KRB5_TRACE=/dev/stdout kinit <用户名>
/etc/krb5.conf
- 主配置文件/var/kerberos/krb5kdc/
- KDC数据库和配置文件/etc/krb5.keytab
- 密钥表文件/var/log/krb5kdc.log
- KDC日志/var/log/kadmind.log
- Kadmin日志通过以上步骤,可以系统地排查Linux环境中Kerberos认证相关的问题。