根据我的经验,当您在 Microsoft Active Directory、IIS、SQL Server 或其他使用 Kerberos 验证的服务中遇到 「找不到 Service Principal Name (SPN)」 或相关 Kerberos 验证错误时,我建议先确认 SPN 是否已正确注册到对应的服务账户。 您可以使用 setspn -L <ServiceAccount> 来检查目前已注册的 SPN,并确认其是否与实际存取的服务名称及主机名称相符。 同时,也建议执行 setspn -X 检查是否存在重复的 SPN,因为重复的 SPN 是导致 Kerberos 验证失败最常见的原因之一。
另外,如果环境中使用了 DNS Alias(CNAME),也需要特别留意。 Kerberos 会根据客户端连线时所使用的名称来寻找对应的 SPN,因此如果使用者是透过 Alias 存取服务,通常需要另外为该 Alias 注册相应的 SPN。 对于 IIS 或 SQL Server 环境,也建议确认服务目前是以正确的网域服务帐户执行,并检查近期是否曾变更过帐户或密码,而相关设定尚未同步更新。
如果上述设定都没有问题,可以使用 klist 工具检查 Kerberos Ticket,同时查看客户端与服务器上的 Security Event Log。 许多情况下,事件记录都能直接指出问题是来自缺少 SPN 对应、服务账户设置异常,还是存在重复的 SPN。 一般而言,只要移除重复的 SPN,并将正确的 SPN 注册到正确的服务帐户,Kerberos 验证通常便可恢复正常运作。
希望以上资讯能够帮助您进一步缩小问题范围并解决问题。 如果这则回复对您有所帮助,还请协助点选 「Accept Answer」,让其他遇到相同问题的使用者也能更快速地找到有效的解决方案