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

sec*_*ree 7 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
    
    Run Code Online (Sandbox Code Playgroud)
  4. kinit -k -t test.keytab test,成功.

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

谢谢.

sec*_*ree 7

我发现krbLastPwdChange(a timestamp value)运行后kerberos数据库中的属性发生了变化:

kadmin.local -q "xst -k test.keytab test"
Run Code Online (Sandbox Code Playgroud)

添加选项-norandkey只会创建keytab而不更改密码:

kadmin.local -q "xst -norandkey -k test.keytab test"
Run Code Online (Sandbox Code Playgroud)

我找不到关于的详细文件kadmin xst.


Chr*_*s C 6

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

通过提取密钥表,密码将失效,因此如果您随后尝试使用密码登录,则会出现错误。即使您不知道到底发生了什么,如果您重置密码,它也会使密钥表无效。


Mic*_*l-O 1

原因很简单:

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

我也遇到过这个问题,直到我询问了 MIT Kereros 邮件列表。