服务器忘记 root 密码如何重置

域名注册
域名注册 正式会员超兽战士 👑年卡会员
发布于 2026-10-07 12:59 ·1 浏览 ·0 回复

学会这篇,你就能在忘记服务器 root 密码时,通过单用户模式或救援模式把密码重置回来,重新登录自己的机器。下面按最常见的 Linux 服务器(CentOS 7/8、Ubuntu 20.04/22.04)分步骤讲,前提是你能接触到服务器的控制台(云服务商的 VNC 控制台,或机房的显示器和键盘)。

第一步:确认你用的是哪种控制台

这一步要确认你能不能进到系统启动画面,因为后面的操作全在启动画面上做。结果是你知道自己该走哪条路。

  • 云服务器(阿里云、腾讯云、华为云、AWS 等):登录云厂商控制台,找到这台实例,点「远程连接」或「VNC 登录」,能进到一个黑底白字的登录界面,说明你有控制台权限。
  • 物理服务器:接上显示器键盘,重启后能看到 GRUB 菜单。
  • 如果你只有 SSH,进不去系统,那必须先通过云厂商控制台或机房把控制台拿到手,没有控制台就没法做下面的操作。

注意:部分云厂商的 VNC 控制台不支持粘贴,用户名密码要手打,建议提前把要设的密码写在一个地方。

第二步:进入 GRUB 菜单并编辑启动参数

这一步要在系统启动时抢在引导阶段拦住它。做完你能进到可以改启动参数的地方。

重启服务器,在出现厂商 Logo 或 BIOS 画面后,一直按 Esc(有些机型是 Shift 或 e),直到出现 GRUB 菜单。如果直接进了系统,说明启动太快,再重启一次,这次从一开始就连续按。

在 GRUB 菜单里,用方向键选中第一项(通常是 CentOS Linux (xxx) 7 (Core) 或 Ubuntu),按 e 进入编辑模式。

第三步:改内核启动参数,进入单用户模式

这一步是核心,让系统跳过正常启动流程,直接给你一个不需要密码的 root shell。做完你能看到一个 # 提示符。

在编辑界面里找到以 linux 或 linux16 / linuxefi 开头的那一行,把光标移到行尾,删掉或忽略 rhgb quiet,然后在行尾加上:

CentOS / RHEL:

rd.break

或者用另一种方式,把 ro 改成 rw,并在行尾加 init=/bin/bash。

Ubuntu:

rw init=/bin/bash

改完后按键:

  • CentOS 的 rd.break 方式:按 Ctrl + X 启动。
  • 直接加 init=/bin/bash 的方式:按 Ctrl + X 或 F10 启动。

启动后会停下,出现提示符。CentOS rd.break 方式进入的是 switch_root:/#。

第四步:挂载文件系统为可写并重置密码

这一步把根分区挂成可写,否则改不了密码文件。做完密码就已经换好了。

如果是 rd.break 方式(提示符是 switch_root:/#):

mount -o remount,rw /sysroot
chroot /sysroot
passwd root

然后输入两遍新密码。密码要够复杂,至少 8 位。

如果提示符已经是 bash 且根目录可写(init=/bin/bash 方式),直接执行:

passwd root

注意:如果系统开了 SELinux(CentOS 默认开),rd.break 方式下必须再执行一条命令,否则重启后可能进不去或密码无效:

> touch /.autorelabel
> 

这条命令会让系统下次启动时重建 SELinux 标签,重启会慢几分钟,属正常现象,别断电。

第五步:退出并重启,用新密码登录

这一步让系统正常启动,验证密码是否生效。做完你能用新密码登录。

如果是 chroot 环境:

exit
exit

或者执行:

reboot -f

如果系统卡住不重启,直接通过云控制台点「重启」或物理机按 Ctrl + Alt + Delete。

重启完成后,用 root 和新密码登录。登录成功后,建议立刻再做一件事:确认 SELinux 状态(getenforce),如果是 Enforcing 且刚才没执行 touch /.autorelabel,重启后可能出现登录异常,可再进单用户模式补上。

注意:rd.break 和 init=/bin/bash 这两种方式,本质上都是物理接触机器就能改密码,所以服务器一定要限制控制台访问权限,云账号开启二次验证。

小结

  • 重置 root 密码的前提是能进服务器控制台(VNC / 显示器键盘),只有 SSH 是做不到的。
  • 核心入口是开机时按 Esc 或 e 进 GRUB 编辑,在 linux 行尾加 rd.break(CentOS)或 rw init=/bin/bash(Ubuntu)。
  • CentOS 用 rd.break 时要 mount -o remount,rw /sysroot 再 chroot /sysroot,然后 passwd root。
  • 开了 SELinux 的系统,务必执行 touch /.autorelabel,否则重启后密码可能不生效。
  • 重置完记得做安全加固:限制控制台、开二次验证、密码足够复杂。
版权声明:本文来自 GJ站长论坛《服务器忘记 root 密码如何重置》
原文链接:https://www.gj0.com/thread-293.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~