在 kerberos 数据库中找不到 Kerberos 客户端

Kerberos Client not found in kerberos database

我已经 运行 在 W12 服务器上执行了以下命令 :-

setspn -A HTTP/ krbspn

ktpass /princ HTTP/@ /crypto ALL /ptype krb5_nt_principal /mapuser krbspn c:\ticket\krbspn.keytab -kvno 0 /pass Pa$$w0rd

并且 kinit krbspn 给出了正确的结果, 然而 kinit HTTP/ returns :-

KrbException: Client not found in Kerberos database (6) at sun.security.krb5.KrbAsRep.(KrbAsRep.java:76) at sun.security.krb5.KrbAsReqBuilder.send(KrbAsReqBuilder.java:319) at sun.security.krb5.KrbAsReqBuilder.action(KrbAsReqBuilder.java:364) at sun.security.krb5.internal.tools.Kinit.(Kinit.java:221) at sun.security.krb5.internal.tools.Kinit.main(Kinit.java:113) Caused by: KrbException: Identifier doesn't match expected value (906) at sun.security.krb5.internal.KDCRep.init(KDCRep.java:143) at sun.security.krb5.internal.ASRep.init(ASRep.java:65) at sun.security.krb5.internal.ASRep.(ASRep.java:60) at sun.security.krb5.KrbAsRep.(KrbAsRep.java:60) ... 4 more

我已经准备好检查正向和反向 DNS,它们工作正常。

有趣的事实:-

我在同一台机器上使用了具有相同 SPN 名称的这些确切命令,几个月来一切正常。但是 2 天前我做了演示:-

setspn -D HTTP/ krbspn

然后又做了上面的命令,现在坏了:-(

感谢任何帮助..

谢谢, 尼克尔

  1. setspn -A HTTP/ krbspn/ 之后和 krbspn[=25= 之前有一个空格间隙].那里一定不能有空隙。
  2. ktpass /princ HTTP/@/crypto ALL中,必须在HTTP/之后和[之前指定某种主机名=13=]@,最好是完全限定的 DNS 名称。
  3. kinit HTTP/ 本身总是会失败,因为 SPN 参数不完整,你必须在 HTTP/[=25= 之后有某种主机名] 否则在 KDC 中查找将找不到任何内容。

有关如何 运行 ktpass 命令的示例,请参阅此 link:Kerberos Keytabs – Explained。示例 ktpass 命令位于文章底部。如果您按照此操作,将正确构建 SPN 和 Keytab,如果您按照其他所有内容正确操作,Kerberos 身份验证将成功。