禁止root用户远程登录可提升系统安全,通过修改/etc/ssh/sshd_config中PermitRootLogin为no并重启SSH服务实现。

在Linux系统中,禁止root用户远程登录是提升系统安全性的一个关键步骤。最直接的方法,就是编辑SSH服务的配置文件,将
PermitRootLogin
no
禁止root用户远程登录,本质上是对SSH守护进程的配置进行修改。这个过程并不复杂,但需要一些细致的操作。
首先,你需要通过一个拥有
sudo
sudo
连接到服务器: 使用你的普通用户账户通过SSH连接到服务器。例如:
ssh your_username@your_server_ip
编辑SSH配置文件: SSH守护进程的配置文件通常位于
/etc/ssh/sshd_config
vi
nano
sudo
sudo vi /etc/ssh/sshd_config
查找并修改PermitRootLogin
PermitRootLogin
#
yes
prohibit-password
#PermitRootLogin yes
PermitRootLogin no
PermitRootLogin yes
PermitRootLogin no
PermitRootLogin prohibit-password
PermitRootLogin no
确保该行前面没有
#
保存并退出: 在
vi
Esc
:wq
nano
Ctrl+X
Y
Enter
重启SSH服务: 修改配置文件后,需要重启SSH服务才能使更改生效。根据你的Linux发行版,可以使用以下命令之一:
sudo systemctl restart sshd
sudo service sshd restart
完成这些步骤后,root用户将无法通过SSH远程登录到你的系统。在尝试以root身份登录时,SSH客户端会显示“Permission denied”或类似的错误信息。
在我多年的运维经验里,禁止root用户直接远程登录,这几乎是服务器安全配置中的“黄金法则”了。你可能会问,既然root权限这么强大,为什么还要限制它呢?原因其实很简单,主要集中在以下几个方面:
首先,安全风险过高。root用户拥有系统最高权限,一旦这个账户的密码被破解或密钥泄露,攻击者就能完全控制你的服务器。这就像把家门钥匙和所有贵重物品都放在一起,一旦钥匙丢了,损失是毁灭性的。攻击者通常会优先尝试root账户进行暴力破解,因为这个用户名是固定的,他们只需要猜测密码。
其次,操作失误的代价太大。想象一下,你在root权限下不小心敲错了命令,比如
rm -rf /
再者,难以进行审计和追踪。如果所有管理员都直接使用root账户登录并操作,那么当系统出现问题时,你很难追踪到具体是哪个人、在什么时间、执行了什么操作导致的问题。这给故障排查和责任认定带来了极大的困难。通过普通用户登录,再使用
sudo
最后,这符合最小权限原则。在信息安全领域,最小权限原则是一个核心思想,即用户或程序只被授予完成其任务所需的最低权限。直接使用root远程登录明显违背了这一原则,因为它默认赋予了用户最高权限,无论其当前任务是否需要。
所以,这不是为了刁难你,而是为了你的系统安全着想。
禁用root远程登录只是SSH安全配置的第一步,或者说,是最基础的一步。在我看来,还有一些配置同样重要,它们能进一步加固你的SSH防线,让你的服务器变得更像一个“堡垒”。
一个非常有效的策略是更改默认的SSH端口。SSH默认使用22端口,这是公开的秘密。攻击者扫描开放端口时,22端口是他们的首要目标。将SSH端口更改为非标准端口(例如,一个1024到65535之间的随机端口,且不与其他常用服务冲突),虽然不能从根本上阻止有针对性的攻击,但能显著减少那些自动化脚本和“撒网式”扫描的骚扰。在
/etc/ssh/sshd_config
#Port 22
Port 22222 # 举例,选择一个你喜欢的端口
当然,修改后别忘了在防火墙中开放新端口,并关闭旧的22端口。
接下来,使用密钥认证代替密码认证。这是我个人最推荐,也是最能提升SSH安全性的方法。密码认证容易受到暴力破解和字典攻击,即使你设置了复杂密码,也并非万无一失。密钥认证则基于非对称加密,安全性高出几个数量级。在
/etc/ssh/sshd_config
PubkeyAuthentication yes PasswordAuthentication no
设置
PasswordAuthentication no
此外,你还可以限制允许登录的用户或组。如果你知道只有特定的几个用户或某个用户组的成员需要SSH访问,你可以明确指定他们。这能有效防止未经授权的用户账户尝试登录。
AllowUsers user1 user2 # 或者 AllowGroups admin_group
这些配置可以大大缩小攻击面,让你的SSH服务更加健壮。记住,安全是一个持续的过程,没有一劳永逸的解决方案。
在实际运维中,我们确实会遇到需要root权限才能执行的操作。虽然我们禁止了root直接远程登录,但这并不意味着我们无法以root身份进行操作。相反,我们有更安全、更可控的替代方案,它们既能满足操作需求,又能遵循最小权限原则,并提供更好的审计能力。
最常见且推荐的做法是通过普通用户登录后,再使用sudo -i
su -
sudo -i
sudo -i
sudo
sudo
# 以普通用户登录后 $ sudo -i [sudo] password for your_username: # 现在你就是root了 # root@your_server:~#
su -
su -
sudo
su
su
# 以普通用户登录后 $ su - Password: # 输入root密码 # 现在你就是root了 # root@your_server:~#
除了切换到root shell,你也可以使用sudo <command>
$ sudo systemctl restart nginx
这种方式更加精细化,只在需要时提升权限,执行完命令后立即恢复普通用户权限,进一步降低了误操作的风险。
更进一步,你可以精细化配置/etc/sudoers
sudo
sudoers
通过这些替代方案,我们既能满足root权限的操作需求,又能将风险控制在一个可接受的范围内,这才是真正的安全与效率的平衡。
以上就是Linux如何禁止root用户远程登录的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号