如何重置 FreeIPA 服务器和客户端的 Keytab

如何重置 FreeIPA 服务器和客户端的 Keytab

我按照标准文档分别在主机“SRV”和“CLT”上安装 FreeIPA 服务器和客户端。然后我使用 Web UI 将用户“X”添加到 FreeIPA。现在,当我尝试以 X 身份通过 SSH 连接到 CLT 时,出现错误'Permission denied, please try again.'。我在客户端上检查“/var/log/messages”,看到这个 - '[sssd[krb5_child[3277]]]: Decrypt integrity check failed'

我多次重置密码,但问题并没有得到解决。然后我发现了这些 -

听起来从 SRV 和 CLT 中删除“/etc/krb5.keytab”文件然后重新创建它们将解决问题。

  1. 我应该如何进行此 keytab 重置?
  2. 我是否应该首先从 FreeIPA 库存中取消配置/删除 CLT?

答案1

您使用的是哪种 SSH 身份验证方法?您是在输入密码,还是尝试使用基于 Kerberos 票证的身份验证(gssapi-with-mic 或 gssapi-keyex)?

“解密完整性检查失败”消息可能来自两个来源。如果您输入了错误的密码(您的密码与 KDC 中您的主体的密钥不匹配),您就会收到此消息。如果您的密码正确,但服务器上的密钥表已过期,您也会收到此消息;这种情况会发生在票证和密码身份验证中(因为使用密码,服务器在执行 kinit 后会获得其自己的主机主体的票证,以对 KDC 进行身份验证)。

听起来从 SRV 和 CLT 中删除“/etc/krb5.keytab”文件然后重新创建它们将解决问题。

客户端上的密钥表无关紧要;它不是此方案的一部分。这里可能出现的问题是服务器上的密钥表与 KDC(Kerberos 身份验证服务器或“密钥分发中心”,是 FreeIPA 的一部分)不同步。使用 Kerberos,系统中的所有身份(或“主体”)都有与 KDC 共享的密钥。用户的密钥由其密码生成。sshd 等软件服务的密钥是随机生成的,并存储在名为密钥表(“密钥表”)的文件中,以便服务可以访问它们。这听起来像是 KDC 中更改了 SSH 主体的密钥,但密钥表尚未更新以匹配。您的主体名称采用 user@REALM 格式。SSH 服务的主体名称采用 host/ 格式主机名@REALM。尝试:

$ ipa-getkeytab -s <FreeIPA server> -p host/<hostname>@REALM -k <keytab file>.

... 将 SSH 服务主体的当前密钥提取到新的密钥表中。您可以使用klist -ek <keytab>查看旧密钥表和新密钥表的内容。如果密钥不匹配,则应显示为同一主体的密钥具有不同的密钥版本号(或“kvno”)。您可能会看到类似以下内容:

# look at the system keytab
$ sudo klist -ek
KVNO Principal
---- --------------------------------------------------------------------------
   1 host/[email protected] (AES-256 CTS mode with 96-bit SHA-1 HMAC)

# look at the new keytab
$ klist -ek <new keytab>
KVNO Principal
---- --------------------------------------------------------------------------
   2 host/[email protected] (AES-256 CTS mode with 96-bit SHA-1 HMAC)

答案2

我也解决了这个问题。因为 ccache 包含以前安装的 IPA 服务器的旧密钥,所以只需删除/var/lib/sss/db/ccache_*文件

票上有更多的细节: https://fedorahosted.org/sssd/ticket/2781

答案3

有时,IPA 客户端无法在到期前检索更新主机密钥表,原因包括 DNS 或网络连接。因此,可能需要手动更新密钥表,以使服务器重新与 IPA 同步。

在客户端上,登录以kinit获取 KDC 上具有特权访问权限的用户的 Kerberos 票证授予票证,以获取新的主机密钥表(管理员将工作)

kinit admin

从 KDC 更新主机的密钥表,其中

  • ipahostname.mydomain.com是 IPA 服务器的完全限定域名
  • host/[email protected]host ipahostname.mydomain.com是该领域mydomain.com的服务主体
  • /etc/krb5.keytab是正在使用的系统密钥表的位置。此路径是许多安装的默认路径。
ipa-getkeytab -s ipahostname.mydomain.com -p host/[email protected] -k /etc/krb5.keytab

成功完成后,重新启动 SSSd 以开始使用新的 keytab

systemctl restart sssd

答案4

在客户端上我删除了 /etc/krb5.keytab 在服务器上我删除了主机 ipa host-del host.example.com

我卸载了ipa客户端软件。

我重新安装ipa客户端

但是,客户端不工作。

At 最后,我必须重新启动 ipa-server ipactl restart 并...

客户端工作正常。我猜想 kdc 服务器或类似的服务器在缓存中有一些关于客户端密钥的内容。

问候。

相关内容