使用 SSH 别名时,为什么 SSH 忽略我的(有效)Kerberos 票证?

使用 SSH 别名时,为什么 SSH 忽略我的(有效)Kerberos 票证?

我已通过 ssh 使用 Kerberos 票证身份验证成功连接到我的大学网络。正常、详细的操作(kinit 票证,然后 ssh user@hostname)可以正常工作。

问题

但是,在文件中设置 ssh 别名时~/.ssh/config,ssh 完全忽略 Kerberos 并提示输入密码。 (请参阅下面的调试输出。)

为什么是这样?我如何配置它以使用 Kerberos?

注意:在尝试使用 ssh 别名之前和之后,使用 Kerberos 的正常 ssh 操作仍然有效。此外,当提供登录密码时,ssh 别名可以按预期工作。

(系统:Mac OS 10.11.4、Darwin 内核版本 15.4.0、OpenSSH_6.9p1、LibreSSL 2.1.8、Kerberos 5 版本 1.7)

调试输出

当从 CL 运行 SSH 时,我添加了-vvv详细的调试信息,然后比较了输出。我已经包含了显着不同的部分。

$ ssh -vvv [ssh-alias]

debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup password
debug3: remaining preferred: ,keyboard-interactive,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
[email protected]'s password:
debug2: we sent a password packet, wait for reply
debug1: Authentication succeeded (password).
Authenticated to login.engin.umich.edu ([141.213.74.56]:22).
$ ssh -vvv [user@host]

debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup gssapi-keyex
debug3: remaining preferred: gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-keyex
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug2: we did not send a packet, disable method
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address 141.213.74.58.
debug2: we sent a gssapi-with-mic packet, wait for reply
debug1: Delegating credentials
debug1: Delegating credentials
debug1: Authentication succeeded (gssapi-with-mic).
Authenticated to login.engin.umich.edu ([141.213.74.58]:22).

答案1

正如我所看到的,Kerberos 配置处理完全限定的主机名 ( gato.example.org) 而不是不合格的主机 ( gato);使用不合格的主机名在测试调试行时会产生ssh以下结果:

debug1: Next authentication method: gssapi-with-mic
debug1:  Miscellaneous failure (see text)
Error from KDC: LOOKING_UP_SERVER while looking up 'host/[email protected]' (cached result, timeout in 1089 sec)

这是因为 kerberos 主机的/etc/krb5.keytab文件中通常仅具有完全限定的主机主体条目:

[root@gato ~]# strings /etc/krb5.keytab | head -3
EXAMPLE.ORG
host
gato.example.org

您的日志似乎都使用完全限定的login.engin.umich.edu主机名,因此您的问题可能是其他问题,但一般来说,在处理 kerberos 时,最好手动强制使用完全限定的主机名~/.ssh/config

Host gato.example.org gato bubba
    Hostname gato.example.org

或者通过CanonicalizeHostname关键字(请参阅ssh_config(5)详细信息和注意事项)。

另一点需要注意的是,这login.engin.umich.edu是一个主机池;要测试的一件事是该池中的特定节点对于 kerberos 配置错误,从而将您转回密码身份验证,尽管这需要编辑/etc/hosts以包含类似以下内容:

141.213.74.56 login.engin.umich.edu

并记住完成后删除测试条目。 (使用IP地址对kerberos没有好处,您需要使用主机名,因此需要进行/etc/hosts测试。)

相关内容