介绍
所有基于 Linux 的机器默认都安装了一个默认的 root 用户,该用户拥有系统上的所有权限;默认情况下,您始终以 root 用户(超级用户)身份进行操作。安全最佳实践建议您禁用 root 用户通过 SSH 登录,以防止未经授权的访问。禁用 root 用户登录会阻止 root 用户通过 SSH 访问您的 Linux 机器,这意味着任何人都无法利用其无限权限。根据推荐的安全实践,您应该创建一个拥有几乎所有超级用户权限的额外用户,用于登录。.
在本教程中,您将禁用 Ubuntu 中的 root 登录,以防止通过 SSH 进行未经授权的 root 访问,并提高基于 Linux 的系统的安全性。.
先决条件
要完成本教程,您需要以下工具:
- 一台运行 Ubuntu 20.04 的服务器,配备一个具有 sudo 权限的非 root 用户、一个防火墙和至少 1GB 的内存,您可以按照我们的 Ubuntu 20.04 服务器初始设置指南进行设置。.
步骤 1 — 登录并检查 auth.log
此时,您需要以非root用户身份,使用sudo权限登录服务器,以检查身份验证尝试。通过查看身份验证日志,您可以看到已授权和未授权的登录尝试。.
在准备步骤中,您创建了一个新用户,并将其添加到 sudo 组以授予其管理权限。您将使用此 sudo 用户访问系统,因为禁用 root 用户登录后,您将无法以 root 用户身份登录。.
根据您选择的登录方式,使用 SSH 登录服务器。如果您在初始服务器设置期间使用 SSH 密钥登录到 root 帐户,则应使用基于密钥的登录机制,因为使用基于密钥的登录时密码验证将被禁用。否则,请使用基于密码的登录方式,并使用 sudo 用户密码。.
ssh sammy@your_server_ip如果您使用的是基于密钥的登录方式,请使用以下命令以 sudo 用户身份登录服务器:
ssh -i your_private_key sammy@your_server_ip旗帜 -我 指向用于读取私钥进行身份验证的身份文件。.
然后,使用以下命令检查 auth.log 文件:
cd /var/log/
sudo cat auth.log如果提示,请输入密码。.
您将得到类似这样的输出:
Output
May 29 18:46:32 ubuntu sshd[3886]: Disconnected from invalid user cally 43.155.90.144 port 47454 [preauth]
May 29 18:51:56 ubuntu sshd[3890]: Received disconnect from 195.38.129.16 port 10017:11: Bye Bye [preauth]
May 29 18:51:56 ubuntu sshd[3890]: Disconnected from authenticating user root 195.38.129.16 port 10017 [preauth]
May 29 18:52:24 ubuntu sshd[3892]: Received disconnect from 178.128.234.248 port 58660:11: Bye Bye [preauth]
May 29 18:52:24 ubuntu sshd[3892]: Disconnected from authenticating user root 178.128.234.248 port 58660 [preauth]
May 29 18:52:34 ubuntu sshd[3894]: Received disconnect from 43.134.106.128 port 33854:11: Bye Bye [preauth]
May 29 18:52:34 ubuntu sshd[3894]: Disconnected from authenticating user root 43.134.106.128 port 33854 [preauth]
May 29 18:53:07 ubuntu sshd[3896]: Invalid user projects from 176.183.60.72 port 42070
May 29 18:53:07 ubuntu sshd[3896]: Received disconnect from 176.183.60.72 port 42070:11: Bye Bye [preauth]
May 29 18:53:07 ubuntu sshd[3896]: Disconnected from invalid user projects 176.183.60.72 port 42070 [preauth]
May 29 18:57:27 ubuntu sshd[3900]: Received disconnect from 92.255.85.135 port 20436:11: Bye Bye [preauth]
May 29 18:57:27 ubuntu sshd[3900]: Disconnected from authenticating user root 92.255.85.135 port 20436 [preauth]
May 29 19:06:40 ubuntu sshd[3903]: Invalid user default from 27.71.207.190 port 57513
May 29 19:06:41 ubuntu sshd[3903]: Connection closed by invalid user default 27.71.207.190 port 57513 [preauth]
...登录并查看身份验证日志后,您可能会发现服务器收到大量未经授权的请求。这可能表明您应该禁用 root 用户登录,并定期更改密钥和密码。.
步骤 2 — 禁用 root 登录
在此步骤中,您将打开 sshd_config 文件以禁用 root 登录,然后重新启动 sshd 服务以在修改后读取配置。.
sshd_config 文件包含 SSH 配置文件,用于存储 sshd 服务使用的参数。sshd 服务负责管理 SSH 连接。您必须重启 sshd 服务才能使配置更改生效。.
sudo nano /etc/ssh/sshd_config浏览文件并查找 PermitRootLogin 行:
Output
...
#LoginGraceTime 2m
PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
...然后,金额 允许Root登录 从 是的 到 不 改变:
Output
...
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
...保存并关闭文件,然后重启 sshd 服务以应用配置更改:
sudo systemctl restart sshd步骤 3 — Root 登录测试
禁用 root 用户登录后,请尝试使用 SSH 以 root 用户身份登录。要使用密码或 SSH 密钥登录,请使用以下命令:
ssh root@your_server_ip以 root 用户身份登录将会出现类似这样的错误信息:
root@your_server_ip: Permission denied (publickey).要重新获得对服务器的访问权限,请使用具有 sudo 权限的非 root 用户凭据登录:
ssh sammy@your_server_ip结果
本文介绍了如何在 Ubuntu 系统中配置 sshd 以禁用 root 用户登录。现在您知道如何在 Linux 系统上禁用 root 用户登录,从而提高系统安全性。.









