禁用 SSH 密码验证的正确方法是什么

禁用 SSH 密码验证的正确方法是什么

我见过两条建议,在将 SSH 公钥传输到 Ubuntu 服务器后禁用密码验证。每一条都涉及对文件的不同修改sshd_config

  1. 数字海洋文章推荐PermitRootLogin without-password

  2. 本教程建议PasswordAuthentication no

两者有什么区别?

答案1

PermitRootLogin without-password有点用词不当(这就是为什么在 OpenSSH 的最新版本中它被弃用而改用 的原因PermitRootLogin prohibit-password)。它的作用是允许 root 登录,但只能通过密码验证以外的方法;例如,允许基于密钥的验证。它对 root 以外的用户没有影响。

PasswordAuthentication no禁止所有用户的密码验证。请注意,通过使用Match块,可以仅禁止某些用户的密码验证,或者在全局禁止的情况下允许某些用户进行密码验证:

# Prohibit password authentication only for user foo
Match User foo
    PasswordAuthentication no

# Prohibit password authentication for all users other than foo
PasswordAuthentication no
Match User foo
    PasswordAuthentication yes

Match块还可以匹配其他内容,例如,通过使用主机名匹配,您可以仅允许本地网络上的机器进行密码验证。man sshd_config有关详细信息,请参阅。

相关内容