我按照标准文档分别在主机“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'
。
我多次重置密码,但问题并没有得到解决。然后我发现了这些 -
- http://www.cmf.nrl.navy.mil/krb/kerberos-faq.html#badpass
- https://groups.google.com/forum/#!topic/comp.protocols.kerberos/g-s76WeWyUU
听起来从 SRV 和 CLT 中删除“/etc/krb5.keytab”文件然后重新创建它们将解决问题。
- 我应该如何进行此 keytab 重置?
- 我是否应该首先从 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_*
文件
答案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 服务器或类似的服务器在缓存中有一些关于客户端密钥的内容。
问候。