我有一个 debian squeeze 主机,在没有密码提示的情况下我无法使用 kerberos 登录。一台配置相同的 ubuntu 12.04 主机工作正常,可以在没有密码提示的情况下登录。
在 kinit 之后,klist 给出:
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: boti@REALM
Valid starting Expires Service principal
14/02/2013 16:37 15/02/2013 16:37 krbtgt/REALM@REALM
现在,当我尝试通过 ssh 登录到 debian-squeeze 时,我看到了密码提示。如果我此时检查我的票而不进行身份验证,我会得到:
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: boti@REALM
Valid starting Expires Service principal
14/02/2013 16:37 15/02/2013 16:37 krbtgt/REALM@REALM
14/02/2013 16:38 15/02/2013 16:37 host/debian-squeeze@
14/02/2013 16:38 15/02/2013 16:37 host/debian-squeeze@REALM
所以很明显我得到了一张票。然而 ssh 调试日志给出:
Postponed gssapi-with-mic for boti from 192.168.255.98 port 59557 ssh2
debug3: mm_request_send entering: type 40
debug3: mm_request_receive_expect entering: type 41
debug3: mm_request_receive entering
debug3: monitor_read: checking request 40
debug1: Unspecified GSS failure. Minor code may provide more information
Wrong principal in request
我的 DNS 没问题。已经尝试重新创建主体/密钥。因此,那里发布的解决方案都没有帮助。
有什么提示吗?
在示例输出中,我看到您得到了一个密钥
debian-squeeze
- 一个没有任何点的主机名。这确实有点证明您将反向解析设置为指向短名称。这真的是您看到的非 FQDN 名称,还是针对问题进行了编辑?Kerberos 应该与其中任何一个一起工作,但您可以仔细检查主机本身是否认为它被称为
debian-squeeze
. 检查内部的正向 - >反向查找是否debian-squeeze
真的解析为debian-squeeze
:我还没有真正听说过使用短名称部署 Kerberos,所以如果您有选择,坚持使用 FQDN 可能是个好主意。
更新:
客户端当前正在获取短名称的密钥,但服务器认为它是用长名称正确命名的。很可能问题就在那里。只是为了确定,请尝试以下操作:
检查来自客户端的正向/反向名称查找。IE
返回的名称是客户端将尝试为其获取票证的名称。从您的输出来看,这可能是简称。
检查服务器上存在哪些密钥。
在列表中,您应该看到一个主体与上一个命令中的主机名相匹配。如果它不存在,那就是你的问题。如果它在那里...
验证 kerberos 服务器上的密钥版本是否与 上的相同
debian-squeeze
。在客户端上,显式获取密钥并验证行尾的“KVNO”版本:无论如何,所有这些命令中的主机名和“kvno”版本应该匹配。
当服务器上的 /etc/hosts 包含其 IP 地址条目与 DNS 或密钥表中的内容不匹配时,我看到了此错误。您是否仔细检查(或删除)了 /etc/hosts 中的所有非本地主机条目?