我已通过 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
测试。)