Ssh

SSH 認證:(公鑰異或密碼)+ google 驗證碼

  • January 7, 2022

我正在使用 Debian 靶心。我正在嘗試設置 SSH 兩種類型的登錄:

  1. 來自 Google Authenticator 的密碼 + 程式碼(如果使用者設置它,“nullok”選項),
  2. 來自 Google Authenticator 的公鑰 + 程式碼(如果使用者設置了它,“nullok”選項)。

類型 #1 對我有用。在類型 #2 中,我有來自 GA 的公鑰 + 密碼(不是公鑰密碼)+ 程式碼。我將此行添加到 /etc/ssh/sshd_config

AuthenticationMethods publickey,keyboard-interactive keyboard-interactive

如果提供了密鑰,我希望使用者不會被提示輸入密碼。準確地說,如果提供了公鑰,如何繞過 pam_unix.so 需求?

有什麼辦法可以在一台機器上完成我想要的嗎?提前致謝。

大概我解決了。

CERN 的 PAM_2FA 項目包含次要的 pam 模組:pam_ssh_user_auth.so。該模組可以告訴 PAM 是否有任何先前成功的 sshd 身份驗證,如公鑰 (PAM_SUCCESS)。所以我做了以下更改:

/etc/ssh/sshd_config:

PasswordAuthentication no
ChallengeResponseAuthentication yes 
UsePAM yes 
AuthenticationMethods keyboard-interactive:pam publickey,keyboard-interactive:pam

/etc/pam.d/sshd:

auth    [success=2 ignore=ignore default=die]   pam_ssh_user_auth.so
auth    [success=1 default=ignore]      pam_unix.so nullok
auth    requisite                       pam_deny.so
auth    [success=ok ignore=ignore default=bad]        pam_google_authenticator.so nullok
auth    required        pam_permit.so

它允許在給出公鑰時跳過密碼提示。

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