ubuntu服务器密码忘了,最稳妥的办法是通过GRUB引导菜单进入recovery模式重置密码,整个过程不需要重装系统,数据也不会丢。
ubuntu服务器忘记root密码,首选GRUB recovery模式
大多数Ubuntu服务器默认安装了GRUB引导程序,这是进入系统前的一段菜单界面,你只需要在开机时打断正常启动流程,就能进入一个带root权限的修复环境,直接修改密码。
怎么进入GRUB菜单
物理服务器或带显示器的场景下,重启服务器后密切关注屏幕,按下电源键后立刻连续按Shift键,或者在某些新版本Ubuntu上按Esc键,等待GRUB菜单出现,如果按键太晚错过了时机,就等系统完全启动后再重启一次。
GRUB菜单通常是一个黑底白字的列表,包含几个内核版本选项和一个“Advanced options for Ubuntu”条目,选中这一项回车,进入二级菜单,找到带有“(recovery mode)”字样的选项。
临时修改内核参数
选错选项会造成系统无法启动,但别担心,这不会损坏数据,更直接的方法是,在GRUB主菜单上选中默认内核条目,按e键进入编辑模式,找到以“linux”开头的那一行,通常在结尾处能看到“ro quiet splash”字样,把ro改成rw,然后在行尾追加init=/bin/bash,修改完成后按Ctrl+X或F10启动。
这一步的本质是让系统跳过正常的服务启动流程,直接进入一个root命令行外壳,你会看到类似root@(none):/#的提示符,说明已经拿到了系统的最高权限。
在命令行改掉root密码
此时文件系统已经以读写模式挂载,执行passwd root命令,按提示输入两次新的root密码,屏幕上会显示“passwd: password updated successfully”,修改生效,接着输入
exec /sbin/init或直接输入reboot -f重启服务器,用新密码登录即可。
如果当前用户不是root,而是普通用户忘了自己的密码,同样在recovery模式中多执行一步:passwd username,把username替换成实际的用户名。
ubuntu服务器进不去recovery模式,改用Live CD重置密码
在一些特殊场景下,GRUB菜单根本无法出现,比如说启用了GRUB密码保护、使用了UEFI安全引导且设置不当,或者系统更新时GRUB配置损坏,这时就需要借助Ubuntu安装介质来重置密码。
准备Ubuntu Live CD或启动U盘
找一台能联网的电脑,从Ubuntu官网下载04 LTS或04 LTS的ISO镜像,用Rufus或balenaEtcher写入U盘,将U盘插入服务器,开机时按F12、F2或Del键进入启动菜单,选择从U盘启动,不同品牌的服务器进入启动菜单的按键略有差异,常见的有F11、F12和ESC。
选择“Try or Install Ubuntu”这一项,进入Live系统桌面,这一步不会动服务器的硬盘,只是临时把Ubuntu跑在内存里。
挂载服务器的根分区
打开终端,执行sudo fdisk -l查看磁盘分区布局,服务器通常使用/dev/sda1作为EFI分区,/dev/sda2作为根分区,如果你的服务器使用了LVM逻辑卷管理,分区名会显示为/dev/ubuntu-vg/ubuntu-lv这种格式。
创建挂载点并挂载根分区:
sudo mkdir /mnt/root
sudo mount /dev/sda2 /mnt/root
挂载成功后用ls /mnt/root检查,能看到etc、home、var等目录就说明选对了分区,如果挂载的是LVM卷,这条命令同样适用。
chroot后执行密码重置
直接修改
/mnt/root/etc/shadow文件里的密码哈希,成功率最高,用sudo chroot /mnt/root进入服务器的真实环境,然后执行passwd root,chroot会切换当前进程的根目录,让系统以为你就在服务器的原生环境里。
修改完成后,执行exit退出chroot环境,输入sudo umount /mnt/root卸载分区,重启并拔掉U盘,行业共识认为,Live CD方案适用于一切GRUB损坏、内核崩溃的极端情况,是运维人员的最后一道保险。
LUKS全盘加密是例外,提前有备份才能脱困
如果服务器在安装系统时勾选了全盘加密,上述所有方案都会失效,LUKS加密会在启动时要求输入解密密码,这个密码和系统登录密码是独立的,忘记任何一层,数据都无法直接读取。
面对这种情况,唯一的恢复路径是当初设置的加密恢复密钥,在Ubuntu安装过程中,系统会生成一个恢复密钥并要求你抄写保存,如果这个密钥也遗失了,数据基本无法找回,只能重装系统,业内专家指出,处理加密服务器密码问题时,应当先确认加密层级的密码状态,再考虑系统登录密码的恢复。
vps重置ubuntu密码,多数控制台就能解决
租用的云服务器或VPS场景下,大部分服务商提供了免密码重置入口,不需要折腾GRUB,简米云、酷番云、华为云的VPS控制台都有“重置实例密码”功能,只需在控制台点击重置,然后重启实例,新密码自动生效,AWS EC2通过密钥对登录,忘记密码就重新生成密钥对并绑定到实例。
比较特殊的是容器化服务器,如果Ubuntu跑在LXD或LXC容器里,直接在宿主机上执行lxc exec 容器名 -- passwd root就能改密码,不需要进容器重启,Docker容器则用docker exec -it 容器名 passwd。
使用虚拟机自建Ubuntu服务器的朋友,可以在虚拟化平台(如VMware、Proxmox VE)中挂载Live CD镜像,操作步骤和物理机一致。
ubuntu服务器密码忘了之后,重启会不会丢数据
重启和密码重置本身不会丢失数据,修改密码只涉及/etc/shadow这个文件,对/home、/var/www、/etc目录下的业务数据没有直接影响,需要警惕的是,进入recovery模式或Live CD环境后,如果误操作执行了分区格式化或删除文件命令,才会造成数据损失。
修改密码前别忘了检查服务器是否启用了SSH密钥登录,如果启用了密钥认证,可以不处理密码问题,直接用私钥连上服务器,再用passwd命令重置密码,全程无需重启,对业务零影响。
Q&A:ubuntu服务器密码忘了,常见疑问
忘记的是sudo密码,但记得root密码,如何给普通用户重置
用root身份登录服务器,执行passwd 用户名,按提示设置新密码,完成后该用户的sudo密码同步更新。
recovery模式里passwd提示“Authentication token manipulation error”
这通常是因为文件系统仍处于只读状态,回到GRUB编辑界面,确认ro已经改成rw,或者进入recovery菜单后先执行mount -o remount,rw /,再运行passwd命令。
修改密码后登录还是失败,密码明明输对了
检查是否误改了/etc/shadow文件的权限,正常情况下该文件权限为-rw-r-----,属主为root:shadow,权限异常时执行chmod 640 /etc/shadow和chown root:shadow /etc/shadow修正,如果是Ubuntu 22.04以上版本,还需确认PAM配置未被破坏,/etc/pam.d/common-password文件存在且内容完整。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/767554.html





