对特定用户强制 SSH 公钥认证

Cre*_*ing 13 security ssh public-key

是否可以强制特定用户使用公钥登录,同时允许其他用户使用密码登录?由于公钥身份验证(使用密码)比仅密码身份验证更强大,我们希望要求 sudoers 使用公钥登录。但是,强制普通用户这样做不太方便。在 中sshd_config,我没有看到任何与策略相关的配置。

lar*_*sks 14

你有几个选择。在这个答案中,我将假设您sudoers定义了一个组。

查看sshd_config手册页,并查找Match指令。这使您可以指定仅适用于 ssh 连接子集的配置块。你可以这样做:

Match Group sudoers
PasswordAuthentication no
ChallengeResponseAuthentication no
Run Code Online (Sandbox Code Playgroud)

理论上,您可以使用 PAM 配置完成类似的事情,该配置只会使sudoers组中的人的身份验证尝试失败。这可能会涉及pam_succeed_if模块……您可以auth在 sshd的配置中添加类似的内容:

auth        requisite     pam_succeed_if.so user notingroup sudoers quiet
Run Code Online (Sandbox Code Playgroud)

这意味着只有不在sudoers组中的人才能通过 PAM 进行身份验证。请注意,这是未经测试的。您也可以使用 pam_listfile模块来做类似的事情。

  • 这打破了 OpenSSH 7.7p1 - 我必须删除 ChallengeResponseAuthentication 指令才能让它重新启动。 (2认同)