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

Linux如何禁止root用户远程登录
最新回答
吃素的蚊子

2026-07-07 21:15:48

在Linux中禁止root用户远程登录,可通过修改SSH配置文件/etc/ssh/sshd_config,将PermitRootLogin选项设置为no,并重启SSH服务实现。 具体操作如下:

  • 登录服务器:使用拥有sudo权限的普通用户账户通过SSH连接到服务器,例如:ssh your_username@your_server_ip若当前只能以root身份登录,需先创建普通用户并赋予sudo权限。

  • 编辑SSH配置文件:使用文本编辑器(如vi或nano)以sudo权限打开配置文件:sudo vi /etc/ssh/sshd_config或sudo nano /etc/ssh/sshd_config

  • 修改PermitRootLogin选项:

    找到PermitRootLogin行,可能存在以下情况:

    #PermitRootLogin yes(被注释且默认允许):删除#并修改为PermitRootLogin no。

    PermitRootLogin yes(直接允许):修改为PermitRootLogin no。

    PermitRootLogin prohibit-password(允许密钥登录但禁止密码登录):修改为PermitRootLogin no以彻底禁止。

    确保修改后的行前无#符号。

  • 保存并退出编辑器:

    vi:按Esc键,输入:wq后回车。

    nano:按Ctrl+X,输入Y确认保存,最后按Enter。

  • 重启SSH服务:根据系统类型选择命令:

    Systemd系统(如CentOS 7/8、Ubuntu 16.04+):sudo systemctl restart sshd

    SysVinit系统(如Debian 8、Ubuntu 14.04):sudo service sshd restart重启后,root用户将无法通过SSH远程登录,尝试登录时会显示Permission denied错误。

禁止root远程登录的原因:

  • 降低安全风险:root用户拥有最高权限,密码或密钥泄露会导致服务器被完全控制。禁止远程登录可避免攻击者通过暴力破解或已知漏洞直接获取root权限。
  • 减少操作失误影响:普通用户权限受限,误操作(如rm -rf /)的影响范围更小,而root权限下的错误可能导致系统崩溃。
  • 便于审计追踪:通过普通用户登录后使用sudo提权,可记录操作日志,明确责任人及操作时间,便于故障排查。
  • 符合最小权限原则:仅授予用户完成任务所需的最低权限,避免默认赋予最高权限。

其他SSH安全配置建议:

  • 更改默认SSH端口:将端口从22改为非标准端口(如1024-65535之间的随机端口),减少自动化扫描攻击。修改/etc/ssh/sshd_config中的Port选项,并更新防火墙规则。
  • 使用密钥认证:在配置文件中设置PubkeyAuthentication yes和PasswordAuthentication no,禁用密码认证,仅允许密钥登录。确保已为用户配置SSH密钥。
  • 限制登录用户或组:通过AllowUsers(如AllowUsers user1 user2)或AllowGroups(如AllowGroups admin_group)指定允许登录的用户或组,缩小攻击面。

需root权限时的安全替代方案:

  • 通过普通用户提权:

    使用sudo -i:输入普通用户密码后切换到root shell,操作日志会被记录。$ sudo -i[sudo] password for your_username:# root@your_server:~#

    使用su -:输入root密码后切换到root shell(审计能力较弱)。$ su -Password: # 输入root密码# root@your_server:~#

  • 执行单条命令:使用sudo <command>(如sudo systemctl restart nginx)临时提权,执行后立即恢复普通用户权限。
  • 精细化配置/etc/sudoers:限制用户可执行的sudo命令,甚至指定无需密码的命令(需谨慎配置,避免引入新漏洞)。

通过以上措施,可在保障系统安全的同时,灵活管理root权限需求。