我有一个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,here和this 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”版本应该匹配.