SSH 密钥身份验证和两因素身份验证的组合

Bra*_*don 7 ssh password pam two-factor

我想知道是否可以同时完成以下操作:

  • 禁用 root 登录
  • 为个人用户启用 SSH 登录,只能通过 SSH 密钥
  • 为非特权用户启用 SSH 登录,仅使用密码身份验证两因素身份验证

使用中的Matchsshd_config我能够设置它,以便PasswordAuthentication除了非特权用户(让我们称之为peon)之外,通常被禁用。登录个人用户(具有 sudo 功能)需要 SSH 密钥。

然而,当我尝试启用双因素身份验证(pam_google_authenticator)我有打开ChallengeResponseAuthentication这似乎不是一个工作Match块,并因此开启了大家的密码验证回来。

有没有办法做到这一点?我对这种类型的东西并不太擅长,因此非常感谢详细的解释。

谢谢!

daw*_*wud 4

最新版本openssh包括AuthenticationMethods以下选项:

Debianopenssh-6.2 向后移植了一段时间,所以我希望 Raspbian 也能使用它。

指定必须成功完成才能授予用户访问权限的身份验证方法。

sshd_config您可以启用您的主块ChallengeResponseAuthentication

ChallengeResponseAuthentication yes
PasswordAuthentication no
PermitRootLogin no
Run Code Online (Sandbox Code Playgroud)

然后AuthenticationMethods在您的Match块中使用(使用Group匹配而不是User匹配来简化可扩展性):

Match Group personal
  AuthenticationMethods publickey

Match Group peon
  PasswordAuthentication yes
  AuthenticationMethods publickey,keyboard-interactive
Run Code Online (Sandbox Code Playgroud)

此外,仅当匹配组需要时,您才可以pam_succeed_if(8)触发双因素身份验证:

 auth required pam_succeed_if.so quiet user ingroup peon
Run Code Online (Sandbox Code Playgroud)

  • `错误的配置选项:AuthenticationMethods` -- `匹配块中不允许使用指令'AuthenticationMethods'` 这是否意味着我需要更新 ssh? (3认同)