Ubuntu 22.04 Kerberos认证Active Directory时出现KDC_ERR_S_PRINCIPAL_UNKNOWN错误
解决Ubuntu 22.04 Kerberos认证AD域时的KDC_ERR_S_PRINCIPAL_UNKNOWN错误
问题根源
KDC_ERR_S_PRINCIPAL_UNKNOWN本质是域控制器(DC)找不到这台Ubuntu机器对应的Kerberos服务主体。结合DC能ping通Ubuntu但nslookup解析失败的情况,核心问题是DC的DNS系统中没有该Ubuntu机器的正向/反向解析记录——Kerberos严重依赖DNS关联主机名与服务主体,缺失记录必然导致认证失败。
分步解决步骤
1. 确认Ubuntu的DNS配置
Ubuntu必须使用域控制器作为DNS服务器才能同步相关记录,查看当前配置:
cat /etc/resolv.conf
如果nameserver不是DC的IP,修改systemd-resolved配置(Ubuntu 22.04默认用这个):
sudo nano /etc/systemd/resolved.conf # 将DNS字段改为DC的IP,例如:DNS=192.168.1.10 sudo systemctl restart systemd-resolved
2. 在DC手动添加DNS记录
直接登录域控制器,在AD DNS管理器中添加两条记录:
- 正向解析:将Ubuntu主机名(如
ubuntu-host)绑定到它的IP地址 - 反向解析:将Ubuntu的IP地址绑定回完整主机名(如
ubuntu-host.yourdomain.com)
3. 刷新Kerberos缓存并重获票据
先清除旧的无效缓存:
sudo kdestroy
重新向域申请票据:
kinit your-username@YOURDOMAIN.COM
用klist命令验证是否成功获取有效票据。
4. 检查Ubuntu主机名是否为FQDN
Kerberos要求主机使用完全限定域名(FQDN),查看当前主机名:
hostname -f
如果输出不是ubuntu-host.yourdomain.com格式,修改主机名:
sudo hostnamectl set-hostname ubuntu-host.yourdomain.com
修改后重启主机生效。
5. 验证DNS双向解析
回到DC上执行nslookup,确认双向解析正常:
nslookup ubuntu-host.yourdomain.com nslookup 192.168.1.20 # 替换为Ubuntu的实际IP
额外排查点
- 检查
/etc/krb5.conf配置,确保realm设置正确:
[libdefaults] default_realm = YOURDOMAIN.COM [domain_realm] .yourdomain.com = YOURDOMAIN.COM yourdomain.com = YOURDOMAIN.COM
- 用
realm list命令确认Ubuntu已正确加入域。
内容的提问来源于stack exchange,提问作者Tolu
相关产品推荐
相关产品推荐

