在Kerberos中生成密钥表后,为什么密码不正确?

时间:2015-08-27 12:02:59

标签: kerberos

在我的Kerberos系统中:

  1. 运行kinit test并输入passwd,然后成功。
  2. kadmin.local -q "xst -k test.keytab test"生成密钥表。
  3. 运行kinit test并输入passwd,失败:

    kinit: Password incorrect while getting initial credentials
    
  4. 运行kinit -k -t test.keytab test,成功。

  5. 这是正常的吗?如果没有,可能的原因是什么?

    感谢。

3 个答案:

答案 0 :(得分:7)

我在运行后发现kerberos数据库中的属性kadmin.local -q "xst -k test.keytab test" 发生了变化:

-norandkey

添加选项kadmin.local -q "xst -norandkey -k test.keytab test" 只会创建密钥表而不更改密码:

kadmin xst

我找不到有关 IAdvanceBus = bus.Advanced.Consume(queueName, registration => { registration.Add<MESSAGE1>((message, info) => { ProcessMessage(MESSAGE1) }) registration.Add<MESSAGE2>((message, info) => { ProcessMessage(MESSAGE2) }) registration.Add<MESSAGE3>((message, info) => { ProcessMessage(MESSAGE3) }) registration.Add<MESSAGE4>((message, info) => { ProcessMessage(MESSAGE4) }) registration.Add<MESSAGE5>((message, info) => { ProcessMessage(MESSAGE5) }); }); 的详细资料。

答案 1 :(得分:4)

这是设计的。您不能在Kerberos中同时拥有密码和密钥表。原因是如果两者都被启用,如果有人能够代表您拉一个密钥表或者拥有您的密钥表的副本,那么他们可能会伪装成您而您永远不会知道它。他们可以通过kinit生成TGT。

通过拉取密钥表,密码无效,因此如果您尝试使用密码登录,则会出现错误。即使您不确切知道发生了什么,如果您重置密码,也会使密钥表无效。

答案 2 :(得分:1)

原因很简单:

kinit告诉您在数据库中找不到客户端,对吧?默认情况下,当使用keytab调用kinit时,它使用默认服务器pricipal来获取TGT。在您的情况下host/<hostname>@REALM,但您的keytab包含主体test@REALM的密钥。

在我问过MIT Kereros邮件列表之前,我也遇到过这个问题。