我更新了 Kerberos 5 服务器的主密钥遵循 MIT Kerberos 5 说明。我重新启动了 kdc 和 kadmind 服务并使用 krb5-prop 将更改推送到其他服务器。
现在我无法从任何服务器(包括管理服务器)连接 kadmin:
$kadmin
Authenticating as principal jacob/[email protected] with password.
Password for jacob/[email protected]:
kadmin: GSS-API (or Kerberos) error while initializing kadmin interface
通过搜索,我发现这种情况的一个常见原因是时间同步问题,但机器在一秒钟内匹配,即使是运行 kadmind 的服务器也会失败。
我不知道如何解决此问题。我的 kadmind 版本没有我发现的任何调试参数或详细日志记录级别。我尝试使用 -nofork 从命令行运行它,结果非常安静。
密码被接受了。我可以将 kinit 作为目标原则,如果我输入密码错误,它会告诉我。
kadmin: Incorrect password while initializing kadmin interface
如果 kadmind 服务没有运行,它也会出现不同的错误。
kadmin: Communication failure with server while initializing kadmin interface
在更新主密码之前我没有测试 kadmin,但我最近使用过它,没有进行其他配置更改。我尝试检查我的密钥版本号 (kvno),它们似乎是正确的。
还有什么原因可能导致这种情况?我还可以在哪里检查?我该如何调试 kadmind?
Debian 8,krb5-admin-server 1.12.1。
答案1
我遇到了同样的问题(相同的 Debian 和 krb5-admin-server 版本)。
和你一样,当我从 kerberos 管理服务器本身运行 kadmin 时它不起作用,这排除了时间差异(我甚至安装了 NTP 以确保 - 它对问题没有影响)。
就我而言,问题出在熵上。Kadmin 非常安全,需要大量熵来生成会话密钥。
我的设置(测试设置)正在虚拟机上运行。我发现根本无法使用 kadmin,但大约半小时后,kadmin 就会“神秘地”开始工作。
您可以在以下位置检查系统熵:
/proc/sys/内核/随机/entropy_avail
为了解决这个问题,我利用了主机的熵(/dev/random),并使用 rng-tools 将其提供给 kadmin。
另外,对于常规的 Kerberos 故障排除,您可以查看:
https://web.mit.edu/kerberos/krb5-latest/doc/admin/troubleshoot.html
诸如下列操作将把跟踪日志发送到标准输出,让您可以详细了解正在发生的事情:
env KRB5_TRACE=/dev/stdout kadmin -p johndoe/[email protected]
答案2
检查服务器上是否已打开 kdc 端口(749
默认情况下,tcp
和udp
),并且客户端可以连接到它。这对我来说是导致错误的问题kadmin: Communication failure with server while initializing kadmin interface
。
答案3
supported_enctypes
从 krb5 1.17 升级到 1.18 后,我遇到了这个错误,对我来说,答案最终是我需要在我的 中注释掉kdc.conf
:https://forum.ubuntuusers.de/topic/krb5-admin-server-startet-nicht-mehr/#post-9160670(德语)。
我认为这与在 krb5 1.18 中删除单 DES 有关。我的配置来自以前的默认设置,并且一直适用于 1.17,如下所示:
supported_enctypes = aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3
https://web.mit.edu/kerberos/krb5-latest/doc/admin/advanced/retiring-des.html
我敢打赌,我可能只是从该列表中删除了单 DES 条目,但在这种情况下,最好只使用使用更强的 AES 加密的较新的默认值。
所以在某些情况下,这个错误实际上可能意味着kdc.conf
参数过多而不是缺少参数。如果它能告诉你哪些参数有问题而不是让你猜测,那就太好了。