b0t*_*0ti 8 linux ssh kerberos debian-squeeze
我有一个 debian 挤压主机,在没有密码提示的情况下我无法使用 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
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试通过 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
Run Code Online (Sandbox Code Playgroud)
所以很明显我得到了一张票。然而 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
Run Code Online (Sandbox Code Playgroud)
我的DNS没问题。已经尝试重新创建主体/密钥。因此,在那里发布的所有解决方案都没有帮助。
任何提示?
在示例输出中,我看到您获得了一个键debian-squeeze- 一个没有任何点的主机名。这确实证明您将反向解析设置为指向短名称。这真的是您看到的非 FQDN 名称,还是针对该问题进行了编辑?
Kerberos 应该与任何一个一起使用,但您可以仔细检查主机本身是否认为它被称为debian-squeeze。检查内部的正向 -> 反向查找是否debian-squeeze真的解析为debian-squeeze:
$ getent hosts $(hostname) | awk '{print $1; exit}' | xargs getent hosts | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)
我还没有真正听说过使用短名称部署 Kerberos,因此如果您有选择,坚持使用 FQDN 可能是个好主意。
更新:
客户端当前正在获取短名称的密钥,但服务器认为它使用长名称正确命名。问题很可能就在那里。为确定起见,请尝试以下操作:
检查来自客户端的正向/反向名称查找。IE
$ getent hosts debian-squeeze | awk '{print $1; exit}' | xargs getent hosts | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)
返回的名称是客户端将尝试为其获取票证的名称。根据您的输出判断,这可能是简称。
检查服务器上存在哪些密钥。
$ 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
...
Run Code Online (Sandbox Code Playgroud)
在列表中,您应该看到与上一个命令中的主机名匹配的主体。如果它不存在,那就是你的问题。如果在那里...
验证 kerberos 服务器上的密钥版本与 上的相同debian-squeeze。在客户端,显式获取密钥并验证行尾的“KVNO”版本:
$ kvno host/debian-squeeze.realm
host/debian-squeeze.realm@REALM: kvno = 1
Run Code Online (Sandbox Code Playgroud)无论如何,所有这些命令中的主机名和“kvno”版本都应该匹配。
| 归档时间: |
|
| 查看次数: |
13504 次 |
| 最近记录: |