linux – SSH Kerberos身份验证失败,在debian squeeze中出现“请求中的错误主体/没有客户端凭据”

我有一个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

这与here,herethis bugreport中描述的非常相似.

我的DNS很好.已经尝试重新创建主体/键.因此,没有任何解决方案帮助发布在那里.

任何提示?

解决方法

在示例输出中,我看到你有一个debian-squeeze的键 – 一个没有任何点的主机名.这有助于证明您设置反向分辨率以指向短名称.这真的是您看到的非FQDN名称,还是针对该问题进行了编辑?

Kerberos应该与之合作,但你可以仔细检查主机本身是否认为它被称为debian-squeeze.检查前进 – > debian-squeeze中的反向查找真的解决了debian-squeeze:

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

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

更新:

客户端当前正在获取短名称的密钥,但服务器认为它使用长名称正确命名.最有可能的问题是那里.只是为了确定,请尝试以下方法:

>检查客户端的正向/反向名称查找.即

$getent hosts debian-squeeze | awk '{print $1; exit}' | xargs getent hosts | awk '{print $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
...

在列表中,您应该看到与上一个命令中的主机名匹配的主体.如果它不在那里,那那就是你的问题.如果它在那里……
>验证kerberos服务器上的密钥版本与debian-squeeze上的密钥版本相同.在客户端上,明确获取密钥并验证行末的“KVNO”版本:

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

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

相关文章

文章浏览阅读1.8k次,点赞63次,收藏54次。Linux下的目录权限...
文章浏览阅读1.6k次,点赞44次,收藏38次。关于Qt的安装、Wi...
本文介绍了使用shell脚本编写一个 Hello
文章浏览阅读1.5k次,点赞37次,收藏43次。【Linux】初识Lin...
文章浏览阅读3k次,点赞34次,收藏156次。Linux超详细笔记,...
文章浏览阅读6.8k次,点赞109次,收藏114次。【Linux】 Open...