在我的 Linux 服务器(Ubuntu 18.04.6 LTS)上,我设置了
PermitRootLogin no
在 /etc/ssh/sshd_config 中并使用重新加载配置
sudo service sshd reload
但我仍然看到
Mar 14 06:18:02 myhost sshd[30049]: error: maximum authentication attempts exceeded for root from 11.222.111.22 port 16138 ssh2 [preauth]
Mar 14 06:18:02 myhost sshd[30049]: Disconnecting authenticating user root 11.222.111.22 port 16138: Too many authentication failures
在日志中。那么为什么呢?应该完全禁用 root 登录吗?如果不允许 root 登录,为什么还要询问或检查密码?
答案1
正如您所说,您已禁用 root 登录PermitRootLogin no
。这样,root 用户就无法直接登录您的操作系统。在您提到的日志中,您会看到 root 登录,因为您的服务器可能已发布在互联网上,并且机器人正在尝试通过 root 用户登录您的操作系统。
我的建议是像您一样禁用 root 登录,并在 sshd_config 文件中添加一些允许的用户,例如工程师的 eng、开发人员的 dev 或任何人,如下所示。这样您就可以限制通过这些用户进行的 SSH 登录。
AllowUsers eng dev tommy
为了获得更好/更高的安全性,最好将端口号从默认的 22 更改为其他端口号,并且如果可能的话,使用公钥/私钥身份验证而不是密码身份验证。
答案2
您可以尝试 arestart
而不是 areload
因为它更有力一些。
如果失败了,您还可以尝试添加DenyUser root
- 它可能PermitRootLogin
仍然允许 root 尝试登录,即使它永远不会成功?