SSH Kerberos身份validation在debian压缩时失败,请求中出现“错误的主体/没有客户端凭据”

我有一个debian挤压主机,我无法在没有密码提示的情况下用kerberoslogin。 一个相同configuration的Ubuntu 12.04主机工作正常,可以login而不需要密码提示。

在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 

现在,当我尝试通过sshlogin到debian-squeeze时,出现密码提示。 如果我没有进行authentication检查我的票,我得到:

 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 

所以显然我得到了一张票。 然而,sshdebugging日志给出:

 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 

这和这里以及这个bug报告中描述的非常相似。

我的DNS很好。 已经尝试重新创build校长/密钥。 所以没有哪个解决scheme在那里发布。

任何提示?

在示例输出中,我看到你得到了一个debian-squeeze的密钥 – 一个没有任何点的主机名。 这确实certificate你设置你的反向分辨率指向短名称。 这真的是你看到的非FQDN名称,还是编辑了这个问题?

Kerberos应该可以兼得,但是你可以仔细检查一下主机本身是否认为它被称为debian-squeeze 。 检查debian-squeeze里的forward – > reverse lookup是否真的解决了debian-squeeze

 $ getent hosts $(hostname) | awk '{print $1; exit}' | xargs getent hosts | awk '{print $2}' 

我还没有真正听说过使用短名称部署Kerberos,所以如果您有select,坚持使用FQDN可能是一个好主意。

更新:

客户端正在获取短名称的密钥,但服务器认为它是正确命名的长名称。 这个问题很可能在那里。 只要确定,请尝试以下操作:

  1. 检查来自客户端的正向/反向名称查找。 即

     $ getent hosts debian-squeeze | awk '{print $1; exit}' | xargs getent hosts | awk '{print $2}' 

    返回的名称是客户将尝试获取票据的名称。 从你的输出来看,这可能是简称。

  2. 检查服务器上的密钥。

     $ sudo klist -k /etc/krb5.keytab Keytab name: WRFILE:/etc/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 1 host/debian-squeeze.realm@REALM 1 host/debian-squeeze.realm@REALM 1 host/debian-squeeze.realm@REALM 1 host/debian-squeeze.realm@REALM ... 

    在列表中,您应该看到与前一个命令的主机名匹配的主体。 如果不存在,那就是你的问题。 如果有的话…

  3. validationKerberos服务器上的密钥版本是否与debian-squeeze 。 在客户端上,明确地获得一个密钥,并在行尾validation“KVNO”版本:

     $ kvno host/debian-squeeze.realm host/debian-squeeze.realm@REALM: kvno = 1 

无论如何,所有这些命令中的主机名和“kvno”版本都应该匹配。

只是为了介绍基础知识,是否检查过所有机器上的时钟是否同步?

当服务器上的/ etc / hosts包含一个与IP地址不匹配的条目时,我看到这个错误。 您是否已经从/ etc / hosts中检查(或删除)了所有非本地主机条目?