igozhang

——

    控制台改密码(Ubuntu / CentOS)

    适用于 IPMI / 云控制台 / 物理 KVM 等带外访问。无控制台权限时无法使用。
    操作会短暂停机,请在维护窗口执行。


    通用说明

    说明
    适用场景 忘记 root/管理员密码、账户被锁、SSH 无法登录
    前提 能重启机器并进入 GRUB 启动菜单
    风险 任何人能接触控制台都可改密;改后请妥善保管
    改完建议 验证 SSH/业务登录;生产环境勿随意开放 root 远程登录

    进 GRUB 菜单:重启后反复按 EscShift(部分机型为 F2 / Del,以实际为准)。


    一、Ubuntu 20.04 / 22.04 / Debian 系

    步骤

    1. 重启,进入 GRUB 菜单
    2. 选中 Ubuntu(或默认启动项),按 e 编辑
    3. 找到以 linux 开头的行,将
      ro quiet splash(或类似)
      改为:
      rw init=/bin/bash
      (保留该行前面的 linux/boot/vmlinuz-... 等路径不变)
    4. Ctrl+XF10 启动
    5. 进入 shell 后执行:
    mount -o remount,rw /
    passwd root          # 改 root;改普通用户则 passwd 用户名
    sync
    exec /sbin/reboot -f
    
    1. 正常启动后用新密码登录,或 su - 切换 root

    说明

    • Ubuntu 默认 root 常处于锁定状态,passwd root 会设密并解锁
    • 若只需改 sudo 用户:passwd youruser
    • 本方法 一般无需 SELinux 相关操作

    速记

    GRUB → e → linux 行末尾改 rw init=/bin/bash → Ctrl+X
    → mount -o remount,rw / → passwd root → reboot -f
    

    二、CentOS 7 / Rocky 8 / 9 / RHEL 系

    CentOS 默认开启 SELinux,改密后必须 touch /.autorelabel,否则重启后可能无法登录或权限异常。

    方法 A:init=/bin/sh(最常用,步骤少)

    1. 重启,进入 GRUB
    2. 选中 CentOS 启动项,按 e
    3. 找到以 linux / linux16 开头的行,在行末追加(或替换 quiet 为):
      init=/bin/sh
    4. Ctrl+X 启动
    5. 执行:
    mount -o remount,rw /sysroot
    chroot /sysroot
    passwd root
    touch /.autorelabel
    exit
    exec /sbin/reboot -f
    
    1. 首次重启可能较慢(SELinux 重新打标签),属正常现象

    方法 B:rd.break(RHEL/CentOS 官方常用)

    1. GRUB 按 e,在 linux / linux16 行末追加:rd.break
    2. Ctrl+X 启动,进入 switch_root 提示符
    3. 执行:
    mount -o remount,rw /sysroot
    chroot /sysroot
    passwd root
    touch /.autorelabel
    exit
    exit
    reboot
    

    改普通用户

    chroot /sysroot 之后:

    passwd username
    touch /.autorelabel
    

    说明

    • 不要省略 touch /.autorelabel(SELinux enforcing 时)
    • 若曾把 root 设为 nologin,改密后检查 /etc/passwd 中 root 的 shell 是否为 /bin/bash
    • Rocky 9 / CentOS Stream 与 CentOS 7 的 GRUB 界面类似,均为编辑 linux

    速记

    GRUB → e → linux 行末加 init=/bin/sh → Ctrl+X
    → mount -o remount,rw /sysroot → chroot /sysroot
    → passwd root → touch /.autorelabel → reboot
    

    三、对照表

    系统 GRUB 改法 改密环境 SELinux
    Ubuntu 20/22 rw init=/bin/bash 直接 shell,mount -o remount,rw / 通常无
    CentOS/Rocky/RHEL init=/bin/shrd.break chroot /sysroot 必须 touch /.autorelabel

    四、改密后检查(可选)

    # 验证 root 可切换
    su - root
    
    # CentOS/Rocky 看 SELinux 是否正常
    getenforce
    # 应为 Enforcing 或 Permissive,且能正常登录
    
    # SSH 是否允许 root(生产建议 no)
    grep -i PermitRootLogin /etc/ssh/sshd_config
    

    五、无法进 GRUB 时

    • 云主机:使用厂商提供的 「重置密码」救援模式 / ISO 挂载
    • 物理机:IPMI 挂载安装 ISO,选 Rescue 进入 chroot 后 passwd
    • 虚拟机:Hyper-V/VMware 控制台同样可编辑启动项或挂载救援盘

    六、安全提醒

    1. 控制台改密 = 物理/带外权限,应限制控制台访问
    2. 改密后及时通知相关人员,并更新密码库/工单记录
    3. 不建议长期开启 root SSH;日常用普通用户 + sudo

    MP3