Ubuntu

在 ipa ubuntu 客戶端上未更新 Kerberos 憑據

  • February 21, 2022

當我使用 ssh 登錄我的 freeipa 客戶端時,我獲得了 Kerberos 憑據(klist)。但是,在它們過期後,我不再獲得憑據(klist 為空)。這導致沒有主目錄,因為使用者沒有 nfs 的權限。我可以使用 kinit 來獲取新的憑據。重新啟動 sssd 並再次使用 ssh 登錄,也獲得了新的票證。使用 sudo 也可以獲得票證。

我什至不知道哪個程序負責請求票證,所以我不知道從哪裡開始調試問題。我有 Ubuntu 20.04 並使用 freeipa-client 包安裝客戶端。

任何幫助,將不勝感激。

如果您使用 ssh 公鑰進行身份驗證,那麼您只是對您的 ssh 守護程序進行身份驗證,而不是對系統進行身份驗證。SSH 守護程序會聲稱它執行了身份驗證,然後將您登錄到 shell。雖然此過程可能使用 PAM 堆棧來設置您的登錄會話,但是它不通過 PAM 堆棧處理身份驗證。

我可能對你說很明顯,但只有在你使用請求它的軟體時才能獲得 Kerberos 票。在典型的系統上,如果在應用程序使用的 PAM 配置堆棧中定義了其中一個,則將通過 PAMauth階段請求此類票證。當此類應用程序(例如)正在跳過階段時,不會呼叫任何負責身份驗證的 PAM 模組,並且無法通過這種方式獲得 Kerberos 票證。pam_sss``pam_krb5``auth``sshd``auth

當 Kerberos 客戶端嘗試請求初始票證授予票證 (TGT) 時,它和 Kerberos KDC 交換所謂的“預身份驗證方法”列表。在實踐中,這些是用於針對 KDC 對客戶端進行身份驗證的方法。客戶端選擇的一種方法,如果被 KDC 接受,則實現實際的身份驗證過程。沒有使用 SSH 密鑰對進行身份驗證的 Kerberos 預身份驗證方法,因此您不能使用 SSH 密鑰對來獲取 TGT。所有標準的基於密碼的預身份驗證方法都是圍繞 Kerberos 客戶端和 Kerberos KDC 建構的,它們知道使用者主體的長期密鑰(密碼),即使它們不通過網路傳遞它。

你能做什麼?您可能想轉而使用智能卡進行身份驗證。Kerberos 支持智能卡身份驗證作為“pkinit”預身份驗證方法。除此之外,SSH 守護程序能夠處理來自智能卡的證書以進行類似於 SSH 密鑰對情況的身份驗證。

如果您要使用 PKINIT 身份驗證,您有兩種方法:在您的工作站上獲取帶有 PKINIT 的 Kerberos TGT,並使用您在本地擁有的 Kerberos 票證登錄到其他機器上的 SSH 守護程序,或者使用您的智能卡證書以身份登錄到 SSH 守護程序SSH 密鑰,然後使用智能卡轉發直接在主機上請求 Kerberos 票證。在前一種情況下,您的原始 TGT 不會自動轉發到 SSH 主機,除非您已請求票證委託。在後一種情況下,您仍然需要申請 TGT。

無論使用哪種方法,您都可以從https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/managing_certificates_in_idm/index中受益

如果您不想或不能使用智能卡,那麼剩下的唯一方法就是直接使用 Kerberos 登錄而忘記 SSH 密鑰對身份驗證。

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