Linux OpenSSH服务器拒绝root用户访问/登录

时间:2020-01-09 10:42:19  来源:igfitidea点击:

如何在Linux服务器上通过ssh会话阻止对root用户的访问?
出于安全原因,如何阻止root用户通过基于ssh的会话登录?

sshd(OpenSSH守护程序)是ssh的守护程序。
服务器端ssh配置在Linux操作系统上的/etc/ssh/sshd_config文件中定义。

ssh是sshd守护程序的客户端程序。
您需要使用DenyUsers选项来阻止对Linux上root用户的访问。
阻止根用户访问的另一种方法是在sshd_config文件中将PermitRootLogin设置为no。

为root用户禁用SSH登录的过程

要为根帐户禁用SSH登录,请执行以下操作:

  • 使用ssh登录到Linux或者Unix服务器:ssh user @ your-server
  • 使用vi编辑/etc/ssh/sshd_config文件
  • 设置``PermitRootLogin no`禁用root的SSH登录
  • 保存并关闭文件
  • 重新加载sshd服务器以拒绝root登录

让我们详细了解所有步骤。

Linux OpenSSH服务器拒绝root用户访问/登录

DenyUsers选项可以阻止任何用户。
此选项后可以跟一列用空格分隔的用户名模式。
不允许使用与其中一种模式匹配的用户名登录。
只有用户名有效;无法识别数字用户ID(UID)。
默认情况下,所有用户都可以登录。
如果该模式采用USER @ HOST的形式,则分别检查USER和HOST,将登录名限制为来自特定主机的特定用户。

打开/etc/ssh/sshd_config文件

使用vi命令命令编辑/etc/ssh/sshd_config文件,运行:

# vi /etc/ssh/sshd_config

拒绝root用户访问

如下添加或者修改以阻止root用户:

DenyUsers root

如果要阻止其他用户,只需将名称追加到DenyUsers

DenyUsers root, user2, user3

保存并关闭文件。
重新启动sshd服务:

#/etc/init.d/sshd restart

或者

$ sudo service sshd restart

对于基于systemd的系统:

$ sudo systemctl restart sshd

OpenSSH使用PermitRootLogin选项拒绝root用户

此选项指定root是否可以使用ssh登录。
语法为:

PermitRootLogin {option}

该选项必须为"是","禁止密码","仅强制命令"或者"否"。
默认值为禁止密码。
例如,要通过ssh拒绝root登录,请在sshd_config文件中进行如下设置:

PermitRootLogin no

再次,重新启动或者重新加载sshd服务:

sudo systemctl restart ssh

测试一下

运行ssh命令,如下所示:

ssh root@box-name
ssh [email protected]

您应该看到如下错误:

[email protected]: Permission denied (publickey).

现在,您只能以普通或者非root用户身份登录:

ssh [email protected]

接下来使用sudo命令或者su命令获得root shell访问权限:

sudo -i

或者

su