如何重置 FreeIPA 伺服器和客戶端的 Keytab
我按照標准文件分別在主機“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'
。我多次重置密碼,但這並沒有解決問題。然後我遇到了這些-
- 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”文件然後重新創建它們將解決問題。
- 我應該如何進行此密鑰表重置?
- 我應該先從 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)