linux服务器忘记root密码,最快的解决办法就一条:物理服务器通过启动菜单进单用户模式重置,云服务器直接去控制台点重置密码,不用重装系统,数据也不会丢。
先分清服务器类型,再决定走哪条路
很多人听到”改密码”第一反应是登录系统执行passwd命令,但密码忘了的根本进不去,思路得绕开系统层面走底层恢复,实际操作中,自建机房的物理服务器、办公环境的VMware虚拟机、云上的ECS实例,恢复方式完全不同。
物理服务器或本地虚拟机,有物理键盘或虚拟控制台,能接触到开机时的GRUB引导菜单,就走单用户模式,云服务器不一样,你只能通过网页控制台操作,没有物理接触途径,但云厂商大多提供了网页版重置密码功能,比传统方式更省事这就引出了两个百度上经常被搜的词:linux服务器忘记root密码怎么办和云服务器root密码忘了在哪里重置,下面分别拆解。
行业共识认为,服务器密码重置在系统运维课程里属于入门级故障恢复操作,成功率极高,没必要花钱找第三方救援。
全面拆解linux单用户模式改密码流程
单用户模式是Linux系统的特殊运行级别,只挂载最小化系统、不启动服务、直接给root shell,相当于Windows的安全模式,利用它重置密码,是物理机和虚拟机场景下公认的通用方案。
重启并进入GRUB编辑界面
第一步需要抢在系统完全启动前打断引导过程:
- 在物理服务器上按重启键,或在VMware控制台执行reboot命令重启虚拟机
- 当屏幕出现GRUB引导菜单时(含内核版本列表的界面),立刻按键盘上的 e 键,进入编辑模式
- 找到以 linux16 开头的那一行(CentOS系)或 linux 开头(Ubuntu系),用方向键移动光标到行尾
这一步讲究手速,有的服务器启动很快,多试几次就熟练了,如果GRUB菜单一闪而过看不到,可以连按方向键上下,让菜单停留等待。
三种修改引导参数的玩法对比
| 方式 | 适用场景 | 进入后的状态 | |
|---|---|---|---|
| rd.break | 在linux16行尾追加 | CentOS 7/8/RHEL | 进入到switch_root临时环境,根目录被挂为只读 |
| 修改为single | 把行尾的ro改为rw,并追加single | CentOS 6及以前版本 | 直接获得root shell,根目录可写 |
| init=/bin/bash | 在linux行尾追加 | Ubuntu/Debian | 进入bash shell,需要手动重新挂载根分区 |
CentOS 7/8系统改密码完整步骤
以最常用的rd.break方案为例,按e进入编辑后,在linux16行尾输入rd.break,按Ctrl+X执行引导,系统会进入一个emergency模式的shell,提示符变成switch_root:/#。
此时按顺序执行以下命令:
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
第一行重新以读写模式挂载真正的系统根分区,第二行切换进原系统环境,第三行就可以交互式设置新密码了,输入两遍新密码后,最关键的一步别漏:
touch /.autorelabel
这条命令用于让SELinux重新标记文件安全上下文不执行的话,改完密码重启大概率会卡在登录界面进不去,最后输入exit退出chroot,再输入exit重启系统,等自动重新标记完成后,新密码生效。
Ubuntu/Debian系统改密码操作
Ubuntu的GRUB编辑界面里找到linux开头那一行,把行中的ro改成rw,并在行尾追加init=/bin/bash,按Ctrl+X启动。
进入bash后根分区本身就是可写状态,直接执行passwd root设置新密码,完成后输入exec /sbin/init启动系统(或reboot -f强制重启),Ubuntu不强制SELinux标记,省去autorelabel环节。
操作前别忘了这三件小事
- 确认当前系统版本,CentOS 6以前的流程和7/8差异很大,别拿老文章硬套
- 改密码前把服务器从生产流量里摘掉,或者安排维护窗口,重启过程会中断所有服务
- 批量操作多台机器时,在终端里启用日志记录,方便事后核对
云服务器root密码忘了,不用进系统也能改
云环境里的服务器没有物理键盘,GRUB菜单也进不去手动通过单用户模式改密码这招在多数云厂商的虚拟化方案里行不通,但云平台都预置了密码重置入口,全程网页点击操作,几分钟搞定。
简米云服务器改密码流程
登录简米云ECS控制台,在实例列表中找到目标机器,点击右侧”更多”下拉菜单,选择”密码/密钥”里的”重置实例密码”,系统会要求设置新密码,需要在8到30位之间,包含大写字母、小写字母、数字和特殊符号中至少三种,设置完成后确认,实例会自动重启生效。
酷番云服务器改密码流程
酷番云CVM控制台里路径类似:实例详情页找到”重置密码”按钮,验证手机短信验证码后即可设置新密码,酷番云额外要求密码12到30位,必须有常规字符集里至少三类,相比简米云多了对密码长度的硬门槛。
做云服务器密码重置时注意两点
- 云控制台重置的密码是整个实例的root登录密码,跑在上面的数据库、站点配置不受影响
- 如果实例之前是密钥对登录且禁用了密码登录,重置后仍可能无法用密码登录,需要同时在控制台安全组里放行22端口,并检查/etc/ssh/sshd_config里的PasswordAuthentication是否保持yes
华为云、AWS等云平台操作路径大同小异,核心都是先到控制台找到实例,再从操作菜单里找重置密码相关入口,不要从网上搜”云服务器root密码忘了”后随便点开个人博客里的命令教程,不同云的底层hypervisor隔离策略差异较大,网页端操作永远是最稳妥的。
改完密码发现登录不上?排查三件事
密码重置成功,但SSH里敲了密码回车后仍然报Permission denied或直接卡住这种情况经常出现,按下面顺序逐一排查。
SSH服务没有正常启动
修改密码时如果用了init=/bin/bash方式进系统,重启过程中SSH服务可能没起来,检查方法很简单,在服务器本地控制台执行systemctl status sshd(CentOS)或systemctl status ssh(Ubuntu),服务状态是active(running)就正常,State显示failed的用systemctl restart sshd拉起即可。
root远程登录被sshd_config限制
云服务器的默认配置里,多数镜像的PermitRootLogin是yes的,但部分安全加固过的镜像会改成prohibit-password或no,修改/etc/ssh/sshd_config文件,确保root可登录,改完执行systemctl reload sshd。
SELinux的autorelabel少做了
用rd.break方式进入系统后忘了touch /.autorelabel,重启后SELinux上下文错乱,root可能在登录脚本阶段被拉起,真正意识到问题的时间,通常在ping通了但SSH连不上的那一刻,这时候重新进一次单用户模式补上标记再重启。
单用户模式也进不去,还能怎么办
某些生产环境的服务器通过了grub2-setpassword设置了引导密码,进GRUB编辑界面先要输账号密码,这种情况说明这台机器有基础防护,也是当初设置密码的人留了一手,如果你的服务器存在这种保护且密码同样无人知晓,还能尝试以下路径:
- 系统安装盘救援模式:用原版ISO镜像启动,选”Rescue a CentOS system”进入chroot环境,核心原理和单用户模式一致,区别在于不受GRUB密码限制
- 另一台机器挂载系统盘:物理机直接拆盘挂到别的机器上,chroot进去修改/etc/shadow文件;云服务器也可以提交工单申请卸载系统盘挂到另一台实例作为数据盘处理
- 操作都不可行时,联系服务器厂商走硬件层面的恢复通道
这几种方案复杂度依次提升,对Linux文件系统权限、shell操作有一定要求,建议先在测试环境演练一遍再对生产机器动手。
linux服务器忘记密码怎么重置:常见问题对照
linux服务器忘记密码怎么重置,最快的方法是什么?
分场景看:物理机或虚拟机环境,重启进入GRUB引导菜单,在linux16行追加rd.break进入紧急模式,依次执行mount -o remount,rw /sysroot、chroot /sysroot、passwd root、touch /.autorelabel后重启,全程大约三分钟,云服务器则在云厂商控制台的实例管理页面直接点”重置密码”,输新密码确认后自动重启,更快更安全。
单用户模式改密码时提示cannot open /etc/shadow怎么办?
该提示说明根文件系统仍处于只读挂载状态,未执行mount -o remount,rw /sysroot 这一步就运行了passwd命令,CentOS系统先返回上一级shell确认挂载参数,Ubuntu检查进入bash时ro是否已经改成rw,改完重新执行passwd即可。
简米云服务器改密码会影响已部署的网站或数据库吗?
不会,控制台重置密码仅修改操作系统层的root用户认证信息,不会触碰磁盘中的数据文件和系统配置,已运行的应用服务在重启后会自动恢复正常,但如果服务器有本地磁盘加密或启用了全盘加密策略,重置后可能需要验证密钥才能完成挂载。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/784013.html

