SSH Kerberos身份验证失败,并在debian squeeze上显示“请求中的主体错误/没有客户端凭据”


8

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

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

我的DNS很好。已经尝试重新创建主体/密钥。因此,所有解决方案都无济于事。

有什么提示吗?


仅作为基础知识,您是否检查过所有计算机上的时钟是否同步?
chutz

这些都是在同一物理主机上运行的所有lxc容器。时钟再没有比这更同步了。
13年

Answers:


7

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

Kerberos都可以使用Kerberos,但是您可以仔细检查主机本身是否认为它被称为debian-squeeze。检查内部的正向->反向查找是否debian-squeeze真正解析为debian-squeeze

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

我还没有真正听说过使用短名称部署Kerberos,因此,如果可以选择的话,坚持使用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. 验证kerberos服务器上的密钥版本与上的密钥版本相同debian-squeeze。在客户端上,显式获取密钥,并在行尾验证“ KVNO”版本:

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

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


由返回的主机称为'debian-squeeze' hostname。IP映射回FQDN,因此您给出的命令将返回'debian-squeeze.realm'。附带说明:我为此主机设置了两个键,一个用于fqdn,一个用于短名称。这会搞砸吗?
13年

很好,我用您应该检查的其他内容更新了我的答案。这很可能是简称/ FQDN混淆。
chutz

非常感谢!我的问题确实是由带有短主机名的额外密钥引起的。我只是希望调试此类问题会更​​容易,以便日志可以指出有问题的主体。
13年

0

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


DNS很好。/ etc / hosts中只有localhost条目。
13年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.