Ssh

SSHD 一直詢問使用者密碼,即使它配置了 publickey,keyboard-interactive

  • August 22, 2021

我正在嘗試在 VPS 實例上配置 sshd,並希望有一個身份驗證女巫是公鑰、鍵盤互動(公鑰和鍵盤互動)。

問題是在發送並接受公鑰後,伺服器在登錄時不斷詢問伺服器使用者密碼。它應該只要求 2FA 程式碼。我可以使用公鑰、伺服器使用者密碼和 2FA 程式碼登錄。

我還有另外兩個類似的設置效果很好,但我記得在設置它們時遇到了麻煩,比如在奇怪的配置文件中使用黑魔法。

我花了無數個小時試圖在其他主機上以這種方式配置 sshd,但現在我似乎沒有實現它。

我還嘗試在工作設置和這個設置上比較客戶端和伺服器日誌,但日誌是相同的!(IP、埠和指紋除外)

SSH 客戶端日誌:https ://pastebin.com/P1xsKTwm

伺服器的 /etc/ssh/sshd_config :https ://pastebin.com/qSH7GAmR

伺服器的 /etc/pam.d/sshd : https://pastebin.com/YBKY91Rk

(使用 sshd 重新啟動sudo systemctl restart sshd.service

編輯:鍵盤互動不僅適用於 2FA

閱讀下面 mforsetti 答案中的評論,我不明白鍵盤互動不僅僅適用於 2FA。

訣竅是編輯/etc/pam.d/sshd文件以禁用密碼身份驗證*(在 mforsetti 的文章和下面的評論中解釋)*

問題是在發送並接受公鑰後,伺服器在登錄時不斷詢問伺服器使用者密碼。

好吧,你特地要求它。

AuthenticationMethods publickey,keyboard-interactive

引用sshd_config手冊,

身份驗證方法

指定使用者必須成功完成才能被授予訪問權限的身份驗證方法。…通過單個字元串any表示接受任何單個身份驗證方法的預設行為…

…例如,“publickey,password publickey,keyboard-interactive”將要求使用者完成公鑰身份驗證,然後是密碼或鍵盤互動身份驗證。…

因此,添加AuthenticationMethods publickey,keyboard-interactive到您的sshd_config, 意味著您希望publickey首先完成身份驗證,然後再keyboard-interactive完成身份驗證。

如果您希望只使用 進行身份驗證publickey,可能會更改

AuthenticationMethods publickey,keyboard-interactive

AuthenticationMethods publickey

或者,如果您啟用任何其他身份驗證方法並期望任何一個成功的身份驗證方法都可以,您可以使用

AuthenticationMethods any

我想同時使用公鑰和 2FA 進行身份驗證

您可能希望common-auth從 PAM 配置中禁用,就像在大多數 Linux/Unix 發行版中一樣,common-auth包含pam-unix.sopam-unix2.so需要帳戶密碼。

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