Sssd

如何重置 FreeIPA 伺服器和客戶端的 Keytab

  • October 7, 2021

我按照標准文件分別在主機“SRV”和“CLT”上安裝 FreeIPA 伺服器和客戶端。然後,我使用 Web UI 將使用者“X”添加到 FreeIPA。現在,當我嘗試將 X 作為 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. 我應該如何進行此密鑰表重置?
  2. 我應該先從 FreeIPA 庫存中取消配置/刪除 CLT 嗎?

您使用的是哪種 SSH 身份驗證方法?您是在輸入密碼,還是嘗試使用基於 Kerberos 票證的身份驗證(gssapi-with-mic 或 gssapi-keyex)?

“解密完整性檢查失敗”消息可能來自兩個來源。如果您給它提供了錯誤的密碼(您的密碼與 KDC 中您的委託人的密鑰不匹配),您會得到它。如果你的密碼沒問題,你也會得到它,但是伺服器上的 keytab 已經過時了;票證和密碼驗證都會發生這種情況(因為使用密碼,伺服器在執行 kinit 後會為其自己的主機主體獲取票證,以驗證 KDC)。

聽起來像是從 SRV 和 CLT 中刪除“/etc/krb5.keytab”文件然後重新創建它們將解決問題。

客戶端上的 keytab 無關緊要;這不是這種情況的一部分。這裡可能的問題是伺服器上的 keytab 與 KDC(Kerberos 身份驗證伺服器,或“密鑰分發中心”,它是 FreeIPA 的一部分)不同步。使用 Kerberos,系統中的所有身份(或“主體”)都有與 KDC 共享的密鑰。使用者的密鑰是從他的密碼生成的。像 sshd 這樣的軟體服務的密鑰是隨機生成的,並儲存在一個名為 keytab(用於“密鑰表”)的文件中,以便服務可以訪問它們。這聽起來像是 SSH 主體的密鑰在 KDC 中已更改,但密鑰表尚未更新以匹配。您的主體名稱的格式為 user@REALM。SSH 服務的主體名稱的格式為主機/主機名@REALM。嘗試:

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

… 將 SSH 服務主體的目前密鑰提取到新的密鑰表中。您可以使用klist -ek <keytab>來查看新舊 keytab 的內容。如果您的密鑰不匹配,它應該顯示為具有不同密鑰版本號(或“kvno”)的同一主體的密鑰。您可能會看到如下內容:

# look at the system keytab
$ sudo klist -ek
KVNO Principal
---- --------------------------------------------------------------------------
  1 host/foo.example.com@EXAMPLE.COM (AES-256 CTS mode with 96-bit SHA-1 HMAC)

# look at the new keytab
$ klist -ek <new keytab>
KVNO Principal
---- --------------------------------------------------------------------------
  2 host/foo.example.com@EXAMPLE.COM (AES-256 CTS mode with 96-bit SHA-1 HMAC)

引用自:https://serverfault.com/questions/582854