是否可以强制特定用户使用公钥login,同时允许其他用户使用密码login? 由于公钥authentication(使用密码)比纯密码authentication更强,我们希望sudoer用公钥login。 但是,强制普通用户这样做是不太方便的。 在sshd_config
,我看不到任何策略相关的configuration。
你有几个select。 在这个答案中,我将假设你已经定义了一个sudoers
组。
看一下sshd_config
手册页,然后查找Match
指令。 这使您可以指定仅适用于ssh连接子集的configuration块。 你可以做这样的事情:
Match Group sudoers PasswordAuthentication no ChallengeResponseAuthentication no
理论上,你可以用一个PAMconfiguration来完成类似的事情,这只会使sudoers
组中的用户无法进行authentication尝试。 这可能会涉及到pam_succeed_if模块…你可以添加这样的东西到你的auth
configuration为sshd:
auth requisite pam_succeed_if.so user notingroup sudoers quiet
这意味着只有不在sudoers
组的人才能通过PAM进行身份validation。 请注意,这是未经testing的。 您也可以使用pam_listfile模块来做类似的事情。
另一个可能的答案,作为@larsks,答案不适用于我的版本的ssh_d
因为我的版本似乎是使用在这里find的文件说明:
匹配关键字后面的行中只能使用一部分关键字。 可用的关键字是。 。 。
该关键字列表不包括: ChallengeResponseAuthentication
。
我发现一个非常有趣的方法是使用AuthenticationMethods
,在你的情况下,它会像这样工作:
Match Group sudoers AuthenticationMethods 'publickey'
AuthenticationMethods
获取逗号分隔值列表,表示用户在访问服务器之前必须经过的一系列方法。
AuthenticationMethods 'publickey,password'
将强制用户通过公钥和密码。
阅读更多的man sshd_config
。