![如何设置 OpenSSH 每个用户的身份验证方法?](https://linux22.com/image/515863/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%20OpenSSH%20%E6%AF%8F%E4%B8%AA%E7%94%A8%E6%88%B7%E7%9A%84%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E6%96%B9%E6%B3%95%EF%BC%9F.png)
我希望能够让一组用户使用公钥认证进行身份验证,而其他用户使用密码认证。
在 Linux 上的 OpenSSH 中可以实现这一点吗?如果可以,我该怎么做?
经过查看/etc/ssh/sshd_config
,我发现我只能启用密钥认证或使用 PAM。
答案1
该Match
指令(在 中描述man sshd_config
)允许在一个 sshd 服务器实例中为不同用户指定不同的身份验证方法。除了枚举单个用户和组之外,它还允许通过通配符选择它们。
Match Group wheel # for users from group wheel:
PubkeyAuthentication
Match Group !wheel,* # for other users:
PasswordAuthentication
# caution: don't add directives here - they will be caught by "Match" block
# (end of file /etc/ssh/sshd_config)
答案2
可以运行两个不同的 OpenSSH 实例。一个实例配置为 ,PasswordAuthentication
另一个配置为PubkeyAuthentication
(每个实例绑定到不同的地址)。然后,AllowGroups
配置指令将用于控制哪些组可以使用哪个服务器。
但我可能误解了这个问题,因为你说“要么是 PAM,要么是 PublicKey 身份验证”。两者可以同时启用。它们并不互相排斥。