禁用特定用户或组的 SSH 密码验证

本指南说明如何在 Linux 和 Unix 操作系统中禁用特定用户或组的 SSH 密码验证。

请注意,我们不会完全禁用对用户或组的 SSH 访问。 相反,我们只会禁用 SSH 密码验证。

用户仍然可以使用其他身份验证方法通过 SSH 访问系统,例如 example 基于 SSH 密钥的身份验证。

禁用特定用户或组的 SSH 密码验证

我们可以使用允许或拒绝用户和/或整个组的 SSH 访问 “/etc/ssh/sshd_config” Linux 中的文件。 sshd_config 文件有一个名为 “匹配” 这将帮助您禁用用户或组的 SSH 密码验证。

让我们首先看看如何禁用特定用户的密码验证。

使用您喜欢的编辑器以 root 身份编辑“/etc/ssh/sshd_config”文件或 sudo 用户:

$ sudo nano /etc/ssh/sshd_config

首先,通过注释掉以下行来删除默认的身份验证方法:

#PasswordAuthentication yes

接下来,在末尾添加以下行:

[...]
Match User senthil
    PasswordAuthentication no

禁用特定用户的 SSH 密码验证

请注意,匹配“直到另一个匹配行或文件末尾”才有效。 如果关键字出现在多个满足的匹配块中,则仅应用关键字的第一个实例。

根据上述 example,我们为名为“senthil”的用户禁用了 SSH 密码验证。 将“senthil”替换为您自己的用户名。 Save 和 close 文件。 重新启动 ssh 服务以使更改生效:

$ sudo systemctl restart ssh

现在尝试通过 SSH 以用户“senthil”身份登录:

$ ssh [email protected]

您将看到以下错误消息:

[email protected]: Permission denied (publickey).

在 Linux 中禁用特定用户的 SSH 密码验证

禁用组的 SSH 密码验证

要禁用特定组的 SSH 密码验证,只需将用户名替换为 sshd_config 文件中的组名即可。

Match Group mygroup
    PasswordAuthentication no

将上述配置中的“mygroup”替换为自己的组名。

不要忘记重新启动 ssh 服务以应用更改。

禁用多个用户的 SSH 密码验证

您可以通过使用逗号分隔的用户名来拒绝多个用户的 SSH 密码验证,如下所示:

Match User senthil,kumar
    PasswordAuthentication no

以上 example 配置将阻止用户“senthil”和“kumar”的 SSH 密码验证。

对除 root 用户之外的所有用户禁用 SSH 密码验证

在某些 Linux 系统中,您可能希望仅对“root”用户允许 SSH 密码验证,而对所有其他用户禁用它。 如果是这样,请在 sshd_config 文件末尾添加以下行:

Match User !root
    PasswordAuthentication no

通过主机或 IP 地址限制 SSH 密码认证

不只是用户或组,我们也可以通过主机或 IP 地址拒绝 SSH 密码验证。

为了 example, 以下 example 将阻止来自包含 IP 地址的主机的 SSH 访问:

Match Address 192.168.225.37
       PasswordAuthentication no

要限制特定 IP 地址范围的 SSH 密码身份验证,请添加以下内容:

Match Address 192.168.225.*
      PasswordAuthentication no

还有这个 example 将使用包含主机名的主机的密码拒绝 SSH 访问:

Match Address hostname
       PasswordAuthentication no

有关更多详细信息,请参阅手册页。

$ man sshd_config

结论

在本指南中,我们讨论了如何在 Linux 中禁用特定用户或组的 SSH 密码验证。 我们进一步研究了如何禁用多个用户的 SSH 密码访问,如何将 SSH 密码访问限制为除 root 用户之外的所有用户。 最后,我们学习了如何通过主机或 IP 地址限制 SSH 密码认证。

其他 SSH 相关指南:

  • 如何在 Linux 中配置基于 SSH 密钥的身份验证
  • 在 Linux 中允许或拒绝对特定用户或组的 SSH 访问
  • 限制每个用户/组/系统的 SSH 登录次数
  • 使用 TCP Wrappers 限制对 Linux 服务器的访问
  • 通过 SSH 在远程 Linux 系统上执行命令
  • 如何在 Linux 中创建 SSH 别名
  • 如何通过 SSH 连接到 Linux 上的特定目录
  • SSLH – 为 HTTPS 和 SSH 共享同一个端口
  • ScanSSH – 快速 SSH 服务器和开放代理扫描器
  • 如何使用 Rsync 通过 SSH 恢复部分传输的文件
  • 如何一次在多个远程系统上运行单个命令
  • DSH – 一次在多台主机上运行 Linux 命令
  • 如何在 Linux 中阻止 SSH 会话断开连接
  • 如何在 FreeBSD 上启用 SSH

希望这可以帮助。