上一篇 下一篇 分享链接 返回 返回顶部

服务器中禁用特定用户或组的SSH密码身份验证

发布人:Minchunlin 发布时间:2020-12-25 17:08 阅读量:1454

本文讲解如何在Linux和Unix操作系统的服务器中为特定用户或组禁用SSH密码身份验证。请注意,这不会完全禁止对用户或组的SSH访问。相反,它将仅禁用SSH密码身份验证。用户仍然可以使用其他身份验证方法(例如基于密钥的身份验证)通过SSH访问系统。

一、禁用特定用户或组的SSH密码身份验证

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

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

使用您喜欢的编辑器作为root或sudo用户来编辑“ / etc / ssh / sshd_config”文件:

$ sudo nano / etc / ssh / sshd_config

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

#PasswordAuthentication是

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

[...]

Match User senthil

PasswordAuthentication no

请注意,"Match "是有效的,"直到另一个 "Match "行或文件结束"。如果一个关键字出现在多个满足的Match块中,则只应用该关键字的第一个实例。

根据以上示例,我们已禁用了名为“ senthil”的用户的SSH密码身份验证。用您自己的用户名替换“ senthil”。保存并关闭文件。重新启动ssh服务以使更改生效:

$ sudo systemctl restart ssh

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

$ ssh senthil@192.168.225.53

您将看到以下错误消息:

senthil@192.168.225.53: Permission denied (publickey).

二、禁用组的SSH密码身份验证

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

Match Group mygroup

PasswordAuthentication no

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

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

三、禁用多个用户的SSH密码身份验证

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

Match User senthil,kumar

PasswordAuthentication no

上面的示例配置将阻止用户“ senthil”和“ kumar”的SSH密码身份验证。

四、对除root用户以外的所有用户禁用SSH密码身份验证

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

Match User !root

PasswordAuthentication no

五、通过主机或IP地址限制SSH密码身份验证

不只是用户或组,我们还可以拒绝通过主机或IP地址进行的SSH密码身份验证。

例如,以下示例将阻止从包含IP地址的主机进行SSH访问:

Match Address 192.168.225.37

PasswordAuthentication no

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

Match Address 192.168.225.*

PasswordAuthentication no

并且此示例将拒绝使用包含主机名的主机的密码进行SSH访问:

Match Address hostname

PasswordAuthentication no

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

$ man sshd_config

目录结构
全文