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

在Linux系统中,禁止root用户远程登录是提升系统安全性的一个关键步骤。最直接的方法,就是编辑SSH服务的配置文件,将
PermitRootLogin
选项设置为
no
,然后重启SSH服务。这能有效阻止攻击者直接通过root账户进行暴力破解或利用已知漏洞。
解决方案
禁止root用户远程登录,本质上是对SSH守护进程的配置进行修改。这个过程并不复杂,但需要一些细致的操作。
首先,你需要通过一个拥有
sudo
权限的普通用户账户登录到你的Linux服务器。如果你目前只能以root身份登录,那么你需要先创建一个新的普通用户,并赋予其
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
(这表示允许密钥登录,但禁止密码登录),为了彻底禁止root登录,也需要修改为:
PermitRootLogin no
确保该行前面没有
#
符号。
保存并退出: 在
vi
中,按
Esc
键,然后输入
:wq
并回车。在
nano
中,按
Ctrl+X
,然后按
Y
确认保存,最后按
Enter
。
重启SSH服务: 修改配置文件后,需要重启SSH服务才能使更改生效。根据你的Linux发行版,可以使用以下命令之一:
对于Systemd系统(如CentOS 7/8, Ubuntu 16.04+):
sudo systemctl restart sshd
对于SysVinit系统(如Debian 8, Ubuntu 14.04):
sudo service sshd restart
完成这些步骤后,root用户将无法通过SSH远程登录到你的系统。在尝试以root身份登录时,SSH客户端会显示“Permission denied”或类似的错误信息。
为什么推荐禁止Linux root用户远程登录?
在我多年的运维经验里,禁止root用户直接远程登录,这几乎是服务器安全配置中的“黄金法则”了。你可能会问,既然root权限这么强大,为什么还要限制它呢?原因其实很简单,主要集中在以下几个方面:
首先,安全风险过高。root用户拥有系统最高权限,一旦这个账户的密码被破解或密钥泄露,攻击者就能完全控制你的服务器。这就像把家门钥匙和所有贵重物品都放在一起,一旦钥匙丢了,损失是毁灭性的。攻击者通常会优先尝试root账户进行暴力破解,因为这个用户名是固定的,他们只需要猜测密码。
其次,操作失误的代价太大。想象一下,你在root权限下不小心敲错了命令,比如
rm -rf /
,那可真是“删库跑路”的现实版了。普通用户即使犯错,其影响范围也往往被限制在自身权限内,不会轻易波及整个系统。使用root权限时,每一次操作都伴随着巨大的潜在风险,这要求操作者必须高度专注和谨慎。
再者,难以进行审计和追踪。如果所有管理员都直接使用root账户登录并操作,那么当系统出现问题时,你很难追踪到具体是哪个人、在什么时间、执行了什么操作导致的问题。这给故障排查和责任认定带来了极大的困难。通过普通用户登录,再使用
sudo
提升权限,可以更好地记录操作日志,提高可审计性。
最后,这符合最小权限原则。在信息安全领域,最小权限原则是一个核心思想,即用户或程序只被授予完成其任务所需的最低权限。直接使用root远程登录明显违背了这一原则,因为它默认赋予了用户最高权限,无论其当前任务是否需要。
所以,这不是为了刁难你,而是为了你的系统安全着想。
除了PermitRootLogin,还有哪些SSH安全配置可以增强系统安全?
禁用root远程登录只是SSH安全配置的第一步,或者说,是最基础的一步。在我看来,还有一些配置同样重要,它们能进一步加固你的SSH防线,让你的服务器变得更像一个“堡垒”。
豆包AI编程
豆包推出的AI编程助手
483 查看详情
一个非常有效的策略是更改默认的SSH端口。SSH默认使用22端口,这是公开的秘密。攻击者扫描开放端口时,22端口是他们的首要目标。将SSH端口更改为非标准端口(例如,一个1024到65535之间的随机端口,且不与其他常用服务冲突),虽然不能从根本上阻止有针对性的攻击,但能显著减少那些自动化脚本和“撒网式”扫描的骚扰。在
/etc/ssh/sshd_config
中,找到
#Port 22
这一行,将其修改为:
Port 22222 # 举例,选择一个你喜欢的端口
当然,修改后别忘了在防火墙中开放新端口,并关闭旧的22端口。
接下来,使用密钥认证代替密码认证。这是我个人最推荐,也是最能提升SSH安全性的方法。密码认证容易受到暴力破解和字典攻击,即使你设置了复杂密码,也并非万无一失。密钥认证则基于非对称加密,安全性高出几个数量级。在
/etc/ssh/sshd_config
中,你需要确保:
PubkeyAuthentication yesPasswordAuthentication no
设置
PasswordAuthentication no
后,你的服务器将只接受密钥登录,任何尝试使用密码登录的请求都会被拒绝。当然,在禁用密码认证之前,请务必确保你已经为所有需要登录的用户配置了SSH密钥,并且密钥能够正常工作,否则你可能会把自己锁在外面。
此外,你还可以限制允许登录的用户或组。如果你知道只有特定的几个用户或某个用户组的成员需要SSH访问,你可以明确指定他们。这能有效防止未经授权的用户账户尝试登录。
AllowUsers user1 user2# 或者AllowGroups admin_group
这些配置可以大大缩小攻击面,让你的SSH服务更加健壮。记住,安全是一个持续的过程,没有一劳永逸的解决方案。
如果必须以root身份进行远程操作,有什么安全的替代方案?
在实际运维中,我们确实会遇到需要root权限才能执行的操作。虽然我们禁止了root直接远程登录,但这并不意味着我们无法以root身份进行操作。相反,我们有更安全、更可控的替代方案,它们既能满足操作需求,又能遵循最小权限原则,并提供更好的审计能力。
最常见且推荐的做法是通过普通用户登录后,再使用
sudo -i
或
su -
命令切换到root用户。
sudo -i
: 这是我个人最常用的方式。当你以普通用户身份登录后,执行
sudo -i
,系统会要求你输入当前普通用户的密码。验证通过后,你就会切换到一个root shell环境,拥有root的所有权限,并且环境变量也会加载root用户的。这种方式的好处在于,
sudo
命令本身会记录操作日志,哪个用户在何时使用了
sudo
执行了什么命令,这些信息都会被记录下来,方便日后审计。
# 以普通用户登录后$ sudo -i[sudo] password for your_username:# 现在你就是root了# root@your_server:~#
su -
: 这种方式是直接切换用户。当你执行
su -
时,系统会要求你输入root用户的密码。如果密码正确,你同样会切换到root shell环境。相比
sudo
,
su
的审计能力稍弱一些,因为它不记录是哪个普通用户执行了
su
操作。但如果你的系统有严格的root密码管理策略,并且你希望直接使用root密码来授权,这也不失为一种选择。
# 以普通用户登录后$ su -Password: # 输入root密码# 现在你就是root了# root@your_server:~#
除了切换到root shell,你也可以使用
sudo
来执行单条需要root权限的命令。例如,如果你只需要重启一个服务,而不想进入root环境,你可以这样做:
$ sudo systemctl restart nginx
这种方式更加精细化,只在需要时提升权限,执行完命令后立即恢复普通用户权限,进一步降低了误操作的风险。
更进一步,你可以精细化配置
/etc/sudoers
文件,限制哪些用户可以执行哪些
sudo
命令,甚至可以指定无需密码即可执行某些特定命令。但这需要非常小心,因为错误的
sudoers
配置可能会带来新的安全漏洞。
通过这些替代方案,我们既能满足root权限的操作需求,又能将风险控制在一个可接受的范围内,这才是真正的安全与效率的平衡。
以上就是Linux如何禁止root用户远程登录的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/433988.html
微信扫一扫
支付宝扫一扫