Linux服务器root密码遗忘不需要重装系统,通过单用户模式或救援模式即可重置,且操作本身不复杂。下面按常见的CentOS、Ubuntu版本分别拆解完整步骤,同时解答修改密码后的连锁问题。
linux系统修改服务器密码忘记了怎么办先分清系统版本
不同Linux发行版和版本号,重置密码的入口完全不同,用错方法可能卡在grub界面或直接触发SELinux恢复流程,先登录服务器管理后台(如简米云控制台、酷番云 Lighthouse),找到VNC或“远程连接”入口,这是你的“物理键盘”,后续所有操作都在这里完成。
| 系统版本 | 推荐重置方案 | 难度 |
|---|---|---|
| CentOS 6 / RHEL 6 | 单用户模式(init 1) | 低 |
| CentOS 7 / RHEL 7 | 单用户模式(rd.break) | 低 |
| CentOS 8 / RHEL 8及以上 | rd.break(SELinux需处理) | 中 |
| Ubuntu 18.04 / 20.04 / 22.04 | recovery mode(恢复模式) | 低 |
| Debian 10 / 11 | single 参数直接进入 | 低 |
如果尝试过但搞不清故障原因,可以跳到文末Q&A排查常见报错。
基于grub的单用户模式适用于CentOS 7全系
以最常见的CentOS 7.x为例,整段操作耗时约< b>3~5分钟,无需任何外部工具。
第一步:在grub菜单按e键中断启动
重启服务器,在出现黑底白字的grub引导菜单时,立刻按键盘上的 e 键,如果没赶上,重启再来一次,这不会损坏系统,只是进入编辑模式。
第二步:修改linux16行参数
找到以 linux16 或 linux 开头的行(长得很长,包含 /vmlinuz 字样),把光标移到行尾,在行尾追加一段参数:
rd.break enforcing=0
逐字敲完,注意前后有空格,不要加错行,按下
Ctrl+X 或者 F10 执行启动。
第三步:以读写方式重挂载sysroot
进入的是一个紧急内存文件系统(initramfs shell),提示符会变成 switch_root:/# ,此时根目录还是只读的,先重挂载:
mount -o remount,rw /sysroot chroot /sysroot
第四步:重置root密码
执行 passwd root,按提示输入两遍新密码。密码长度建议超过8位,包含大小写和数字,完成后,输入两次 exit 退出chroot并重启服务器。
第五步:更新SELinux标签
如果在第一步追加了 enforcing=0,重启后系统会在根目录自动生成一个 .autorelabel 文件,自动重新标记SELinux上下文,等待几分钟,期间不要强制关机,重启完成后,直接用新root密码登录。
行业共识认为,
rd.break是CentOS 7系统最稳妥的密码重置入口,比init=/bin/bash少踩很多SELinux的坑。
Ubuntu不用重装recovery mode一键重置
Ubuntu没有Selinux的干扰,步骤更短,以Ubuntu 20.04 LTS为例。
第一步:进入高级选项
重启机器,在grub菜单高亮第一个内核条目(通常是 Ubuntu 开头),按下 e 键进入编辑。
第二步:定位ro行并修改
找到包含 ro quiet splash 的那一行(通常是 linux 开头),将 ro 改成 rw,然后在行尾加上 init=/bin/bash,改完的效果大致是:
linux /boot/vmlinuz-... root=UUID=... rw init=/bin/bash
按下 Ctrl+X 启动,这会给你一个root shell。
第三步:直接修改密码
在提示符下执行:
passwd root
输入两次新密码就完成了,重启后使用新密码登录。
Ubuntu 22.04的新变化
04默认使用grub2,且部分云镜像的root账号是锁定状态,重置密码前检查一下:
passwd -S root
如果显示 L(locked),先解除锁定:
passwd -u root
然后再更新密码,如果不解锁,改完密码登录时会提示“认证失败”。
linux系统忘记密码的应急替代路径云控制台与救援模式
如果你用的是简米云、酷番云或华为云的ECS,多数情况下有比命令行更快的自救办法。
云控制台直接重置实例密码
登录云厂商控制台,找到“重置实例密码”或“管理密码”入口,简米云在“更多→密码/密钥→重置实例密码”路径下,酷番云在“重置密码”按钮,重置后需要重启实例才能生效。
这类操作的优点是不需要进入grub,但要求你记得云账号的登录密码,如果连云账号密码也忘了,就得走身份验证找回流程拍身份证、填工单,周期较长。
使用救援模式挂载数据盘
适用于系统引导损坏、单用户模式进不去的情况,在控制台停止实例,将系统盘卸载后挂载到另一台同地域的Linux机器上,然后通过chroot修密码或修复grub配置。
操作要点:挂载后先执行 mount -o remount,rw /mnt,再 chroot /mnt,才能用 passwd root 修改原系统的密码,修改完成后卸载数据盘、重新挂回原实例。
修改密码后的常见连锁问题
修改密码后SSH无法登录
重置root密码后,如果SSH登录报 Permission denied,检查两个地方:
- sshd配置:查看
/etc/ssh/sshd_config中PermitRootLogin是否设为yes,很多云镜像默认是prohibit-password,只允许密钥登录。 - 密码策略过期:执行
chage -M 99999 root或passwd -x -1 root,解除密码有效期限制。
SELinux导致系统起不来
如果在CentOS 8上用了 rd.break 但没加 enforcing=0,改完密码重启可能卡在 A start job is running for Security...,解决办法是:重启时再次进入grub编辑,在linux行末尾追加 autorelabel=1,让系统强制重新标记所有文件上下文。
普通用户忘记密码
如果是普通用户密码丢了,必须先用root登录,然后执行:
passwd 用户名
如果root密码也没了,那就按本文第一部分操作,chroot进去后先改root密码,再用root改其他用户密码。
Q&A:linux服务器密码重置高频疑问
重置密码会影响服务器里的数据吗?
不会,单用户模式只是跳过正常登录流程,不涉及格式化分区或删除文件,所有数据文件、数据库内容都原样保留,但如果你在紧急模式下误执行了 rm 或 mkfs,后果自负,为保险起见,重置前建议在控制台做一次云盘快照。
云服务器强制重置密码和手动改有什么区别?
云控制台重置密码本质是厂商通过底层虚拟化接口直接修改系统shadow文件,不依赖grub,优势是全程网页操作,适合不熟悉命令行的用户;劣势是部分厂商要求重启实例才生效,且对自定义镜像支持不佳。
修改密码后,定时任务和开机自启服务会受影响吗?
不受影响。crontab 和 systemd 服务都以守护进程方式运行,不依赖密码状态,唯一需要注意的是,如果有脚本里明文写了旧密码,改完后需要同步更新,比如数据库备份脚本、rsync同步脚本、Ansible的 vars 文件等。
修改服务器的root密码从来不是大工程,关键是知晓从哪里进入系统、怎么挂载目录,说完这套流程,下次再遇到linux系统修改服务器密码忘记了的情况,直接用 rd.break 或云控制台两条路,几分钟就能搞定。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/682953.html





