SSH密钥身份validation和双因素身份validation的组合

我想知道是否有可能在同一时间完成以下内容:

  • 禁用rootlogin
  • 只能通过SSH密钥启用个人用户的SSHlogin
  • 为非特权用户启用SSHlogin,仅使用密码authentication双因素authentication

使用sshd_configMatch块,我能够设置这个,所以通常PasswordAuthentication被禁用,除了非特权用户(让我们称之为peon )。 login个人用户(具有sudofunction)需要SSH密钥。

但是,当我尝试启用双因素身份validation( pam_google_authenticator )时,我必须打开ChallengeResponseAuthentication (似乎无法Match块中工作),因此每个人都要重新启用密码身份validation。

有没有办法做到这一点? 我对这种types的东西不是太好,所以详细的解释将非常感激。

谢谢!

最近版本的openssh包括AuthenticationMethods选项:

Debian支持openssh-6.2 ,所以我期望在Raspbian中也可以使用它。

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

您可以使用启用ChallengeResponseAuthenticationsshd_config主块:

 ChallengeResponseAuthentication yes PasswordAuthentication no PermitRootLogin no 

然后在Match块中使用AuthenticationMethods (使用Group匹配而不是User匹配来缓解可伸缩性):

 Match Group personal AuthenticationMethods publickey Match Group peon PasswordAuthentication yes AuthenticationMethods publickey,keyboard-interactive 

此外,只有匹配组需要时,才可以使用pam_succeed_if(8)来触发双因素身份validation:

  auth required pam_succeed_if.so quiet user ingroup peon