Ubuntu服务器版登录密码忘了,最快最稳的办法是重启服务器,在GRUB引导菜单进入恢复模式(recovery mode),选择root shell后用passwd命令重置密码。整个过程不需要重装系统,也不需要知道旧密码,前提是你有物理或远程KVM控制台权限,本文把这套流程拆开揉碎讲清楚,顺便聊聊大家常踩的坑。
ubuntu忘记密码怎么重置:恢复模式完整实操步骤
恢复模式相当于Ubuntu给管理员留的一扇后门,平时不显眼,关键时刻能救命,下面是针对Ubuntu Server 20.04到24.04版本的操作流程,命令和界面基本通用。
第一步:重启并进入GRUB引导菜单
服务器重启后,屏幕刚出现开机自检信息时,快速按住键盘左下角的Shift键(传统BIOS启动)或反复按Esc键(UEFI启动),直到出现GRUB菜单,GRUB菜单是黑底白字的列表界面,里面有多个选项,第一个通常是“Ubuntu”,下面跟着高级选项和系统测试条目。
如果手速慢了没截住,别急再重启一次,这次从按下电源键那一刻就狂点Shift,有个较笨但稳妥的办法:先正常启动到登录界面,然后用reboot命令重启,在屏幕变黑瞬间开始按键,成功率更高。
第二步:选择恢复模式内核
在GRUB菜单里,用方向键移动到第二项“Advanced options for Ubuntu”,按回车进入子菜单,你会看到几条带内核版本号的条目,Ubuntu, with Linux 6.8.0-31-generic”,其中括号里标注“recovery mode”的那条才是我们要的入口,选中它按回车。
这里容易出现一个误区:有人会顺手选第一项普通启动,结果又回到登录界面,密码还是照样忘了,务必确认括号里的recovery mode字样。
第三步:挂载文件系统为可写状态
进入恢复模式后,你会看到一个简易菜单,包含resume、clean、dpkg、grub、network、root等选项,直接用方向键选中root(Drop to root shell prompt)这一项,按回车。
刚进入的是只读状态,直接改密码会报错,先执行下面这条命令,把根分区重新挂载为可读写:
mount -o remount,rw /
看到命令无报错输出,就说明挂载成功,可以顺手敲df -h确认一下根分区挂载情况,如果根分区那一行挂着且没有ro字样,代表可写状态已就绪。
第四步:用passwd命令重置密码并同步更新
现在你已经是root身份,不需要输入任何密码,重置普通用户的密码,执行(把username换成你的实际用户名,比如ubuntu或admin):
passwd username
系统会提示输入两次新密码,输入时屏幕上不会显示任何字符,这是正常现象,不是键盘坏了,选密码时建议长度不低于
12位,混合大小写字母、数字和符号,别再用Admin@123这种轻松被爆破的组合。
如果你忘记的是root自己的密码,直接执行:
passwd root
重置完密码后,执行这条命令让密码哈希同步到系统认证服务:
sync
然后输入exit退出root shell,回到恢复菜单,选择resume(Resume normal boot)继续正常启动,服务器会自动重启进入系统,用新密码登录即可。
ubuntu服务器root密码忘了怎么进入单用户模式:三种方案对比
恢复模式是首选方案,但在某些特殊场景下可能进不去,比如GRUB菜单损坏、恢复模式内核缺失,或者服务器在云端且供应商控制台响应极慢,这时需要备用方案兜底。
在GRUB编辑界面追加init=/bin/bash
重启进入GRUB菜单,选中普通启动项按e键进入编辑模式(不是直接回车),找到以linux开头的那一行,在行尾先加空格,然后追加:
init=/bin/bash
按Ctrl+X或F10启动,系统会直接以root身份进入bash shell(实际是ramdisk环境),此时根分区同样是只读,需要手动挂载:
mount -o remount,rw /
然后按上面第四步的方式执行passwd重置密码,此方法适合较老版本或系统配置简单的场景,新版Ubuntu(22.04及以上)在systemd环境下偶尔会卡住,需要多做一步exec /sbin/init或通过systemd.unit=rescue.target参数进入救援模式。
用Ubuntu Live USB/DVD启动后chroot
手头有Ubuntu安装盘(同一大版本或更新的即可)时,用Live环境启动机器,选择“Try Ubuntu”进入桌面或命令行环境,挂载根分区并chroot进去操作:
mount /dev/sda1 /mnt mount --bind /dev /mnt/dev mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys chroot /mnt
chroot成功后就进入服务器原来的系统,再执行passwd username改密码,这套方案需要你熟悉磁盘分区的设备名(比如/dev/sda1或用lsblk查看),适合物理机或可以挂载ISO的虚拟机。
云服务器控制台重置(VNC/救援模式)
简米云、酷番云、华为云这些主流云平台的控制台里,都有“重置密码”或“救援模式”功能,本质是帮助你在不进入系统的情况下重设密码,各大平台的入口和验证流程略有差异,但基本都在实例详情页的“更多”或“运维与监控”菜单下,云主机不推荐折腾GRUB恢复模式,直接走平台自带功能更省心。
三种方案对比,按场景选择:
| 方案 | 适用场景 | 难度 | 是否断网 |
|---|---|---|---|
| 恢复模式 | 物理机、VMware/KVM虚拟机,能摸到控制台 | 低 | 全程断网 |
| init=/bin/bash | GRUB可进入但恢复模式异常 | 中 | 全程断网 |
| Live USB/chroot | 手头有重装盘,物理机为多 | 中高 | 全程断网 |
| 云平台控制台 | 云服务器没有物理接入条件 | 极低 | 依赖管理后台 |
重置密码后必须处理的三个坑
密码改完不是万事大吉,下面这几个问题不做处理,你可能还是会登录不上。
根分区全盘加密(LUKS)时要先解锁
如果当初安装系统时勾选了加密LUKS分区,那么进入恢复模式之前,系统会先要求输入加密密码(不是登录密码),这个密码要是也忘了,那上面的方法就彻底失效了,这种情况需要你在创建加密分区时备份的恢复密钥(LUKS recovery key)才能解锁,或者直接放弃该分区数据重装系统。
SSH密钥登录会覆盖密码验证
如果服务器被配置为只允许密钥登录(PasswordAuthentication no),重置密码后依然无法通过SSH连接,你需要用密钥文件登录,或者在恢复模式下把/etc/ssh/sshd_config中的这一项改回yes:
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config systemctl restart sshd
改完后记得在本机用密码验证一次登录,确认无问题再决定是否恢复纯密钥模式,云端生产环境保留密钥登录并关闭密码登录是安全的下限,别因这次失误而长期开放密码认证。
内部账号体系(LDAP/NIS)密码需统一修改
如果服务器加入了LDAP或NIS统一认证域,单纯在本地改passwd只对本地账号生效,域账号密码要在认证服务器上改,这点容易忽略,属于较为常见的场景服务器本地改完密码重启,手写板提示账号或密码错误,排错一圈才发现密码源头在远处。
ubuntu服务器版修改密码命令:预防措施与日常管理建议
这次折腾完,下面几条建议能减少下次“绕圈子”的概率,服务器管理员最高频的日常操作之一,就是定期轮换密码,掌握对应的命令也是基本功。
普通用户自查密码策略合规性
空闲时间执行下面命令,检查与强制密码过期相关的策略:
chage -l username
该命令会显示密码最近修改时间、过期时间、两次修改间隔等,建议设置密码有效期上限为90天,到期后强制修改(对普通运维账号而言):
chage -M 90 username
root账号不建议直接禁止登录,而是改用sudo提权,把root密码封存起来,需要用的时候临时起意去取,较多情况下,日常管理行为都该以普通用户身份配合sudo执行,这样所有命令都有日志渠道可以追溯。
配置SSH密钥认证并关闭密码登录
生产环境建议用ssh-keygen生成密钥对,把公钥追加到服务器~/.ssh/authorized_keys里,然后把sshd_config里的PasswordAuthentication设为no,这样即使密码泄漏,没有私钥文件也进不来,不过要注意:改完立即重启sshd之前,先开着另一个终端会话验证密钥能正常登录,避免把自己锁在门外。
设置GRUB密码防止他人重置
恢复模式等于物理接触就能拿到root权限,如果你管理的服务器放在共享机房、办公区角落或任何人可触碰的位置,建议给GRUB菜单设个密码:
grub-mkpasswd-pbkdf2
把生成的加密哈希写入/etc/grub.d/00_header配置中,并执行update-grub生成新配置文件,这样别人进入GRUB菜单时会被要求输入密码,阻挡掉非授权途径的密码重置操作。
常见问题速查
恢复模式进不去,一直卡在开机画面怎么办?
优先等3-5分钟,排查是不是文件系统错误导致启动停滞,随后强制断电重启,在GRUB菜单选择高级选项中的“fsck”恢复模式分区检查,凡是根分区有异常,系统停留在维护模式是正常现象,用journalctl -xb查看详细日志定位异常点即可。
重置密码后原来保存的SSH密钥还能用吗?
可以用,密码字段与SSH密钥对是两套独立的认证机制,重置密码不会删除或失效任何已存在的公钥,容器里的自动部署脚本通常依赖这些密钥,不会受到影响,唯一要留意的是:如果你用的是SSH密钥里加密的那个私钥文件,而私钥口令刚好就是忘记的那个服务器密码,那无法自动解开私钥,手动输入新密码即可。
在云服务器上有没有比工单系统更快的自助方式?
有,各云厂商的移动端App,往往支持在手机上直接重置实例密码,操作路径通常是:进入实例详情→更多→密码/密钥→重置密码,多数平台的“重置密码”功能会强制重启服务器(也可能让你预约重启时间),期间业务会中断,建议在业务低峰期操作,这样连电脑都不用开,一部手机五分钟左右就能搞定。
密码这事,忘一次是教训,忘两次就是管理问题了,给服务器密码找个固定的存放位置(比如密码管理器、离线加密笔记),到时间就主动轮换,服务器才能安安稳稳当你的“数字管家”。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/581054.html




