SSH 密钥认证和双因素认证的组合

SSH 密钥认证和双因素认证的组合

我想知道是否有可能同时完成以下任务:

  • 禁用 root 登录
  • 为个人用户启用 SSH 登录,仅有的通过 SSH 密钥
  • 为非特权用户启用 SSH 登录,密码认证仅限双因素身份验证

使用Match中的块,sshd_config我能够设置它,以便PasswordAuthentication除了非特权用户(我们称之为peon)之外,一般情况下是禁用的。个人用户(具有 sudo 功能)登录需要 SSH 密钥。

但是,当我尝试启用双因素身份验证(pam_google_authenticator)时,我必须打开ChallengeResponseAuthentication它似乎不是在一个区块中工作Match,因此将为每个人重新开启密码验证。

有办法实现这个吗?我对这类东西不太在行,所以如果能提供详细的解释就更好了。

谢谢!

答案1

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

Debian 反向移植openssh-6.2 一会儿回来,所以我希望这在 Raspbian 中也可以使用。

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

sshd_config您可以启用以下主要块ChallengeResponseAuthentication

ChallengeResponseAuthentication yes
PasswordAuthentication no
PermitRootLogin no

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

Match Group personal
  AuthenticationMethods publickey

Match Group peon
  PasswordAuthentication yes
  AuthenticationMethods publickey,keyboard-interactive

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

 auth required pam_succeed_if.so quiet user ingroup peon

相关内容