首页 > 运维 > linux运维 > 正文

Linux如何禁止root用户远程登录

P粉602998670
发布: 2025-09-03 09:31:01
原创
335人浏览过
禁止root用户远程登录可提升系统安全,通过修改/etc/ssh/sshd_config中PermitRootLogin为no并重启SSH服务实现。

linux如何禁止root用户远程登录

在Linux系统中,禁止root用户远程登录是提升系统安全性的一个关键步骤。最直接的方法,就是编辑SSH服务的配置文件,将

PermitRootLogin
登录后复制
选项设置为
no
登录后复制
,然后重启SSH服务。这能有效阻止攻击者直接通过root账户进行暴力破解或利用已知漏洞。

解决方案

禁止root用户远程登录,本质上是对SSH守护进程的配置进行修改。这个过程并不复杂,但需要一些细致的操作。

首先,你需要通过一个拥有

sudo
登录后复制
权限的普通用户账户登录到你的Linux服务器。如果你目前只能以root身份登录,那么你需要先创建一个新的普通用户,并赋予其
sudo
登录后复制
权限。

  1. 连接到服务器: 使用你的普通用户账户通过SSH连接到服务器。例如:

    ssh your_username@your_server_ip
    登录后复制

  2. 编辑SSH配置文件: SSH守护进程的配置文件通常位于

    /etc/ssh/sshd_config
    登录后复制
    。使用文本编辑器(如
    vi
    登录后复制
    nano
    登录后复制
    )以
    sudo
    登录后复制
    权限打开它:
    sudo vi /etc/ssh/sshd_config
    登录后复制

  3. 查找并修改

    PermitRootLogin
    登录后复制
    选项: 在配置文件中,你需要找到
    PermitRootLogin
    登录后复制
    这一行。它可能被注释掉(以
    #
    登录后复制
    开头),或者设置为
    yes
    登录后复制
    ,甚至可能是
    prohibit-password
    登录后复制

    • 如果找到
      #PermitRootLogin yes
      登录后复制
      ,将其修改为:
      PermitRootLogin no
      登录后复制
    • 如果找到
      PermitRootLogin yes
      登录后复制
      ,直接修改为:
      PermitRootLogin no
      登录后复制
    • 如果找到
      PermitRootLogin prohibit-password
      登录后复制
      (这表示允许密钥登录,但禁止密码登录),为了彻底禁止root登录,也需要修改为:
      PermitRootLogin no
      登录后复制

    确保该行前面没有

    #
    登录后复制
    符号。

  4. 保存并退出:

    vi
    登录后复制
    中,按
    Esc
    登录后复制
    键,然后输入
    :wq
    登录后复制
    并回车。在
    nano
    登录后复制
    中,按
    Ctrl+X
    登录后复制
    ,然后按
    Y
    登录后复制
    确认保存,最后按
    Enter
    登录后复制

  5. 重启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编程

豆包推出的AI编程助手

豆包AI编程 483
查看详情 豆包AI编程

一个非常有效的策略是更改默认的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密钥,并且密钥能够正常工作,否则你可能会把自己锁在外面。

此外,你还可以限制允许登录的用户或组。如果你知道只有特定的几个用户或某个用户组的成员需要SSH访问,你可以明确指定他们。这能有效防止未经授权的用户账户尝试登录。

AllowUsers user1 user2
# 或者
AllowGroups admin_group
登录后复制

这些配置可以大大缩小攻击面,让你的SSH服务更加健壮。记住,安全是一个持续的过程,没有一劳永逸的解决方案。

如果必须以root身份进行远程操作,有什么安全的替代方案?

在实际运维中,我们确实会遇到需要root权限才能执行的操作。虽然我们禁止了root直接远程登录,但这并不意味着我们无法以root身份进行操作。相反,我们有更安全、更可控的替代方案,它们既能满足操作需求,又能遵循最小权限原则,并提供更好的审计能力。

最常见且推荐的做法是通过普通用户登录后,再使用

sudo -i
登录后复制
su -
登录后复制
命令切换到root用户

  1. sudo -i
    登录后复制
    这是我个人最常用的方式。当你以普通用户身份登录后,执行
    sudo -i
    登录后复制
    ,系统会要求你输入当前普通用户的密码。验证通过后,你就会切换到一个root shell环境,拥有root的所有权限,并且环境变量也会加载root用户的。这种方式的好处在于,
    sudo
    登录后复制
    命令本身会记录操作日志,哪个用户在何时使用了
    sudo
    登录后复制
    执行了什么命令,这些信息都会被记录下来,方便日后审计。

    # 以普通用户登录后
    $ sudo -i
    [sudo] password for your_username:
    # 现在你就是root了
    # root@your_server:~#
    登录后复制
  2. su -
    登录后复制
    这种方式是直接切换用户。当你执行
    su -
    登录后复制
    时,系统会要求你输入root用户的密码。如果密码正确,你同样会切换到root shell环境。相比
    sudo
    登录后复制
    su
    登录后复制
    的审计能力稍弱一些,因为它不记录是哪个普通用户执行了
    su
    登录后复制
    操作。但如果你的系统有严格的root密码管理策略,并且你希望直接使用root密码来授权,这也不失为一种选择。

    # 以普通用户登录后
    $ su -
    Password: # 输入root密码
    # 现在你就是root了
    # root@your_server:~#
    登录后复制

除了切换到root shell,你也可以使用

sudo <command>
登录后复制
来执行单条需要root权限的命令。例如,如果你只需要重启一个服务,而不想进入root环境,你可以这样做:

$ sudo systemctl restart nginx
登录后复制

这种方式更加精细化,只在需要时提升权限,执行完命令后立即恢复普通用户权限,进一步降低了误操作的风险。

更进一步,你可以精细化配置

/etc/sudoers
登录后复制
文件,限制哪些用户可以执行哪些
sudo
登录后复制
命令,甚至可以指定无需密码即可执行某些特定命令。但这需要非常小心,因为错误的
sudoers
登录后复制
配置可能会带来新的安全漏洞。

通过这些替代方案,我们既能满足root权限的操作需求,又能将风险控制在一个可接受的范围内,这才是真正的安全与效率的平衡。

以上就是Linux如何禁止root用户远程登录的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号