Ubuntu

SSH 上的 Google Authenticator PAM 在沒有 2FA 的情況下阻止 root 登錄

  • December 23, 2017

情況:

我已經為 Ubuntu 16.04 上的 SSH 登錄啟動了 Google Authenticator 2FA,但在 /etc/pam.d/sshd 中將其設為可選:

auth required pam_google_authenticator.so nullok

我已經為可以從 Internet 登錄的帳戶設置了 2FA,但沒有為限制從同一子網訪問的帳戶設置 2FA,因為正在執行的 cronjobs 必須將內容從伺服器傳輸到伺服器。

這對於除root帳戶之外的每個帳戶都非常有效,因為生產伺服器和備用伺服器必須交換 SSL 密鑰,所以它當然僅限於一個 IP 地址。

案例 A:當我嘗試使用具有 SSH 密鑰但沒有 2FA 的普通使用者帳戶登錄時:沒問題。

案例 B:當我嘗試使用 SSH 密鑰以 root 登錄但沒有 2FA 時,我在 /var/log/auth.log 中收到此錯誤:

Aug 20 23:39:59 host01 sshd[28638]: fatal: Internal error: PAM auth succeeded when it should have failed

您的幫助將不勝感激。

這是預期的行為。假設你有PermitRootLogin without-password,手冊頁PermitRootLogin說:

If this option is set to prohibit-password or without-password, password and keyboard-interactive authentication are disabled for root.

PAM 被認為是鍵盤互動的。因此,使用PermitRootLogin without-passwordPAM 不應允許 root 登錄,這是您觀察到的行為。

without-password該選項之間存在差異yes。你剛剛觀察到了。使用yes,您可以使用密碼或 PAMwithout-password登錄,使用這些方法您無法登錄。您仍然可以使案例如公鑰登錄。

更改PermitRootLoginyes可以解決您的問題,但請考慮所有這些令人頭疼的問題是有原因的。除非你真的知道自己在做什麼,PermitRootLogin否則應該設置為no. 如果您需要遠端執行 root 操作,請以具有sudo權限的使用者身份登錄。

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