Answers:
您有几种选择。在这个答案中,我将假设您已sudoers
定义一个组。
查看sshd_config
手册页,然后查找Match
指令。这使您可以指定仅适用于ssh连接子集的配置块。您可以执行以下操作:
Match Group sudoers
PasswordAuthentication no
ChallengeResponseAuthentication no
从理论上讲,您可以使用PAM配置完成一些类似的操作,而这些操作只会使sudoers
组中的人员无法通过身份验证尝试。这可能涉及pam_succeed_if模块...您可以auth
在sshd 的配置中添加如下内容:
auth requisite pam_succeed_if.so user notingroup sudoers quiet
这意味着只有不在sudoers
组中的人才能通过PAM进行身份验证。请注意,这未经测试。您也可以使用
pam_listfile模块执行类似的操作。
另一个可能的答案(如@larsks)对我的版本无效,ssh_d
因为我的版本似乎正在使用此处找到的文档,其中指出:
Match关键字之后的行上只能使用关键字的子集。可用的关键字是。。。
该关键字列表不包括:ChallengeResponseAuthentication
。
我发现一种非常有趣的方法是使用AuthenticationMethods
您的情况下的方法,如下所示:
Match Group sudoers
AuthenticationMethods 'publickey'
AuthenticationMethods
列出了逗号分隔值的列表,这些值表示用户访问服务器之前必须通过的一系列方法。
AuthenticationMethods 'publickey,password'
会迫使用户先通过公共密钥然后通过密码。
阅读更多man sshd_config
。