控制台改密码(Ubuntu / CentOS)
适用于 IPMI / 云控制台 / 物理 KVM 等带外访问。无控制台权限时无法使用。
操作会短暂停机,请在维护窗口执行。
通用说明
| 项 | 说明 |
|---|---|
| 适用场景 | 忘记 root/管理员密码、账户被锁、SSH 无法登录 |
| 前提 | 能重启机器并进入 GRUB 启动菜单 |
| 风险 | 任何人能接触控制台都可改密;改后请妥善保管 |
| 改完建议 | 验证 SSH/业务登录;生产环境勿随意开放 root 远程登录 |
进 GRUB 菜单:重启后反复按 Esc 或 Shift(部分机型为 F2 / Del,以实际为准)。
一、Ubuntu 20.04 / 22.04 / Debian 系
步骤
- 重启,进入 GRUB 菜单
- 选中 Ubuntu(或默认启动项),按 e 编辑
- 找到以
linux开头的行,将
ro quiet splash(或类似)
改为:
rw init=/bin/bash
(保留该行前面的linux及/boot/vmlinuz-...等路径不变) - Ctrl+X 或 F10 启动
- 进入 shell 后执行:
mount -o remount,rw /
passwd root # 改 root;改普通用户则 passwd 用户名
sync
exec /sbin/reboot -f
- 正常启动后用新密码登录,或
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(最常用,步骤少)
- 重启,进入 GRUB
- 选中 CentOS 启动项,按 e
- 找到以
linux/linux16开头的行,在行末追加(或替换 quiet 为):
init=/bin/sh - Ctrl+X 启动
- 执行:
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
touch /.autorelabel
exit
exec /sbin/reboot -f
- 首次重启可能较慢(SELinux 重新打标签),属正常现象
方法 B:rd.break(RHEL/CentOS 官方常用)
- GRUB 按 e,在
linux/linux16行末追加:rd.break - Ctrl+X 启动,进入
switch_root提示符 - 执行:
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/sh 或 rd.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 控制台同样可编辑启动项或挂载救援盘
六、安全提醒
- 控制台改密 = 物理/带外权限,应限制控制台访问
- 改密后及时通知相关人员,并更新密码库/工单记录
- 不建议长期开启 root SSH;日常用普通用户 + sudo