在 Kerberos 数据库中找不到主机/远程主机名@REALM.COM

Kev*_*vin 4 ssh kerberos

简而言之,我最近建立了一个 RHEL 7 服务器并将其注册到 FreeIPA。所有其他注册的服务器都可以仅使用主机名通过 SSH 相互连接,而不会出现任何问题,使用 gssapi-with-mic 进行身份验证,但这个服务器似乎配置错​​误,并回退到密码身份验证。具体来说,它似乎试图使用短主机名与远程服务器的 FQDN,除非我明确地 ssh 到 FQDN。

如果我使用 FQDN ssh,即

ssh remote-hostname.domain.com
Run Code Online (Sandbox Code Playgroud)

一切正常。如果我不这样做,即

ssh remote-hostname
Run Code Online (Sandbox Code Playgroud)

系统提示我输入密码。启用 ssh 调试提供以下内容:

debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure.  Minor code may provide more information
Server host/remote-hostname@REALM.COM not found in Kerberos database
Run Code Online (Sandbox Code Playgroud)

nslookup 正确给出了服务器的 FQDN:

[kevin@local-hostname ~]$ nslookup remote-hostname
Server:     x.x.x.x
Address:    x.x.x.x#53

Name:   remote-hostname.domain.com
Address: x.x.x.x
Run Code Online (Sandbox Code Playgroud)

本地服务器的域似乎设置正确:

[kevin@local-hostname ~]$ hostname
local-hostname
[kevin@local-hostname ~]$ hostname -f
local-hostname.domain.com
Run Code Online (Sandbox Code Playgroud)

我对从这里去哪里有点困惑。有人能告诉我为什么 SSH 到远程主机名可能不起作用吗?不幸的是,我是 Kerberos 的新手,除了验证新服务器上的 /etc/krb5.conf 文件是否与其他工作服务器上的文件相匹配之外,我真的不知道在哪里查看。

Kev*_*vin 5

这个问题实际上是我设法忽略的 /etc/krb5.conf 中的一个差异 - 我的新服务器有

dns_canonicalize_hostname = false
Run Code Online (Sandbox Code Playgroud)

设置,这 - 正如您所期望的 - 导致主机名没有被规范化为 FQDN。根据手册页,此选项默认为“true”,因此我不确定为什么要更改它。文件有注释

#File modified by ipa-client-install
Run Code Online (Sandbox Code Playgroud)

让我相信是 IPA 注册做到了。将选项设置为“true”(或删除该行)可以解决所有问题。如果有人有更好的见解,我会暂时保留这个问题。