OpenSSH:不同的身份验证方法

OpenSSH:不同的身份验证方法

我需要让用户使用不同的身份验证方法登录 CentOS 系统。一些用户使用密码,另一些用户使用公钥。

我遵循了这里提到的方法: 如何设置 OpenSSH 每个用户的身份验证方法?

但是,我无法成功进行基于密码的登录。

在 sshd_config 文件中,我有:

AuthenticationMethods keyboard-interactive,publickey
PasswordAuthentication no

Match User newton
    PasswordAuthentication yes
Match all

更新:我发现只有当我使用 Google 身份验证启用 2FA 时才会出现此问题,并且出现以下行:

AuthenticationMethods keyboard-interactive,publickey

虽然对于用户 newton,我已经设置了密码验证,但我看到以下错误:

[root@localhost]# ssh [email protected]
Permission denied (publickey).

任何建议都值得赞赏。

答案1

尽管@Tolsadus 的回答可能指出了正确的解决方案,但它并没有清楚地回答问题。

简而言之,的手册页ssh_config是了解 ssh 中的配置解析器如何工作的一个很好的开始(相同的规则适用于sshd_config):

对于每个参数,将使用第一个获得的值

这意味着您的示例将为所有用户设置为,而为PasswordAuthentication用户将不会覆盖它(因为它已经设置)。要解决这个问题,您应该在块中设置默认值。这将对用户产生预期的效果:nonewtonMatchnewton

Match User newton
    PasswordAuthentication yes
Match all
    PasswordAuthentication no

答案2

完美解释如何使用匹配选项/etc/ssh/sshd_config

就你的情况而言,你应该像那个“真实”世界的例子那样做 https://gist.github.com/kjellski/5940875

您不仅可以找到匹配的地址,还可以找到评论的用户。

编辑/更新

@Jakuje 正确地回答了这个问题,比我的更精确。

相关内容