
因此,經過一些廣泛的測試和討論後,我無法再獨自解決這個問題。
目標:使用公鑰或密碼透過 ssh 進行身份驗證,並使用 PAM 進行 MFA。
使用的系統是Ubuntu Server 20.04
將其分成可管理的部分也顯示出組合不同部分的一些困難。
使用公鑰進行身份驗證並使用 PAM 進行 MFA 不是問題。使用密碼進行身份驗證並使用 PAM 進行 MFA 不是問題。使用公鑰或密碼有點不同。與 MFA 結合似乎是不可能的。
問題似乎在於 SSHD 如何使用密碼驗證使用者身分。如果沒有 PAM,SSHD 就無法執行此操作,因為如果沒有 PAM,使用者影子檔案將無法讀取。為身份驗證堆疊啟用 PAM 並啟動 pam_env.so 和 pam_sssd.so 可以解決此問題。
因此,使用 PAM,我可以使用公鑰或密碼進行身份驗證。我不明白的是為什麼 SSHD 需要使用者影子檔案來進行密碼驗證,而不是公鑰?我仍然使用公鑰來獲取我的群組和所有內容,而不使用 PAM,並使用 SSSD 透過authorized_keys 命令提供公鑰。
要使用密碼進行身份驗證,我需要身份驗證堆疊中對應的 pam 模組。
這不會是什麼大問題,但目標是啟用 MFA 並且除非需要,否則不會提示使用者輸入密碼。 MFA需要使用PAM來實作。將 PAM 與公鑰一起使用不是問題,在 sshd_config 中設定方法「publickey,keyboard-interactive」將其傳遞給 PAM,並在 MFA 的 pam_env.so 之後設定 PAM 模組允許這樣做。
但是啟用方法「password,keyboard-interactive」需要pam_sss.so模組,所以即使我使用publickey方法也會提示輸入密碼,然後提示輸入MFA。
如何解決這個問題,以便我可以使用 sssd 中的密碼或 sssd 中的公鑰透過 ssh 進行身份驗證?下一步,PAM 是否需要密碼(最好不需要),無論哪種方式,如何實現 MFA?
由於這仍然在我的腦海中循環,我確信我可以更好地解釋事情,但盡力解釋我的困難。
我讀到的內容是 sssd、pam_ssh、pam_sssd、pam_ssh_agent_auth、sshd。請同時閱讀 DUO、Google MFA、RedHat 的文檔。
有什麼想法或想法嗎?
任何反饋將不勝感激。
謝謝!