是否可以强制特定用户使用公钥登录,同时允许其他用户使用密码登录?由于公钥身份验证(使用密码)比仅使用密码的身份验证更强大,我们希望要求 sudoers 使用公钥登录。但是,强制普通用户这样做不太方便。在 中sshd_config
,我没有看到任何与策略相关的配置。
答案1
您有几个选择。在此回答中,我假设您已sudoers
定义一个组。
查看sshd_config
手册页,并查找Match
指令。这允许您指定仅适用于 ssh 连接子集的配置块。您可以执行以下操作:
Match Group sudoers
PasswordAuthentication no
ChallengeResponseAuthentication no
理论上,你可以用 PAM 配置来实现类似的事情,该配置只会让sudoers
组中的人员的身份验证尝试失败。这可能涉及成功时模块……您可以将类似这样的内容添加到auth
sshd 的配置中:
auth requisite pam_succeed_if.so user notingroup sudoers quiet
这意味着只有不属于该sudoers
组的人才能通过 PAM 进行身份验证。请注意,这未经测试。您还可以使用
pam_列表文件模块来做类似的事情。
答案2
另一个可能的答案,正如@larsks所说,答案对我的版本不起作用,ssh_d
因为我的版本似乎正在使用找到的文档这里其中指出:
在 Match 关键字之后的行中只能使用关键字的子集。可用的关键字有...
该关键字列表不包括:ChallengeResponseAuthentication
。
我发现一个非常有趣的方法是使用AuthenticationMethods
你的情况,如下所示:
Match Group sudoers
AuthenticationMethods "publickey"
AuthenticationMethods
采用逗号分隔的值列表,这些值代表用户在访问服务器之前必须通过的一系列方法。
AuthenticationMethods "publickey,password"
将强制用户使用公钥然后输入密码。
阅读更多内容man sshd_config
。