我想知道是否有可能同时完成以下任务:
- 禁用 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