在运维Linux云服务器时,忘记远程登录密码或者因安全策略需要定期更换口令是很常见的情况。不同于本地物理机可以接显示器操作,云服务器必须借助厂商能力或系统自身机制来完成密码重置,且不同发行版和云平台在细节上有所差异。

一、通过云厂商控制台重置密码
几乎所有主流云服务商都在实例管理页面提供了“重置密码”功能。其原理是当云主机处于关机或运行中(部分支持在线重置)状态时,平台通过宿主机层的Agent或虚拟化接口,将新的加密口令写入系统盘中的/etc/shadow文件对应用户行。该方式不依赖你记得旧密码,也不需要能SSH连通。
以通用流程为例:进入云控制台,找到目标云服务器实例,选择“更多”或“管理”中的“重置密码”或“修改密码”选项,输入新密码并确认,然后重启实例使配置生效。部分厂商要求实例必须先停止再重置,而另一些支持运行状态下强制下发。需要注意的是,若实例使用了密钥登录且禁用了密码认证,单纯控制台改密码可能不会生效,还需同步修改/etc/ssh/sshd_config里的PasswordAuthentication为yes。
操作注意点
控制台重置通常只针对系统盘,如果数据盘独立且未做用户分离则不受影响。新密码需满足平台复杂度要求,例如长度八位以上且包含大小写字母与数字。重置后原SSH连接会被断开,使用新密码重新登录即可。
另外,某些轻量应用服务器在重置密码时若提示失败,往往是因为实例内的cloud-init服务异常,此时可尝试先远程VNC登录排查,或利用下面提到的救援模式方案。
二、系统内使用passwd命令修改
如果你仍能通过密钥或其他方式进入系统,最直接的方法就是执行passwd命令。该命令会调用PAM认证模块,读取/etc/passwd确认账户存在,再加密新密码写入/etc/shadow。整个过程无需重启,立即生效。
下面是修改当前用户及指定用户密码的示例:
# 修改当前登录用户密码 passwd # 修改指定用户(如root)的密码,需要root权限 sudo passwd root # 批量对非交互场景,可用chpasswd echo "testuser:NewPass@123" | chpasswd
上述代码中,passwd为交互式命令,适合人工操作;chpasswd则从标准输入读取“用户名:密码”格式并批量更新,常用于初始化脚本。使用chpasswd时要避免将明文密码写进会被记录的shell历史,建议通过文件重定向传入。
在修改密码后,可用su - 用户名切换测试,或开新SSH会话验证。如果系统启用了SELinux,某些极端情况下需执行load_policy恢复上下文,但一般密码修改不受影响。
三、无法登录时的救援模式重置
当控制台重置不可用、且你又失去了所有登录途径时,可利用云平台的“救援模式”或“单用户模式”挂载原系统盘。救援模式本质是将你的系统盘作为数据盘挂到另一个临时救援实例上,你以root身份挂载后直接编辑shadow文件。
具体步骤通常为:在控制台将故障实例系统盘卸载,挂载到同区救援实例;救援实例中使用mount /dev/vdb1 /mnt挂载,然后先用openssl生成密码串:
# 生成加密密码,复制输出替换shadow中对应字段 openssl passwd -6 "MyNewPass@2024" # 挂载并修改 mount /dev/vdb1 /mnt sed -i 's/^root:[^:]*:/root:加密串:/' /mnt/etc/shadow umount /mnt
这里openssl passwd -6采用SHA-512算法,与大多数现代Linux默认一致。将生成的字符串替换shadow中root的第二个字段即可。操作完毕卸盘并重新挂载回原实例启动,便能使用新密码登录。
单用户模式则是开机在内核参数后加init=/bin/bash或single,绕过登录直接获root shell,再用passwd改密。但云服务器多为GRUB设了保护或串行控制台不可见,因此救援模式更通用。
四、密码策略与安全建议
重置密码不是终点,应配合合理策略。可在/etc/login.defs中设定PASS_MAX_DAYS、PASS_MIN_LEN等参数强制周期更换与复杂度。同时建议保留密钥登录,将密码作为备用通道,并限制SSH端口暴露范围。
下表对比三种重置方式:
| 方式 | 是否需要旧密码 | 是否重启 | 适用场景 |
|---|---|---|---|
| 控制台重置 | 否 | 通常需重启 | 完全失联 |
| passwd命令 | 是(非root改他人时) | 否 | 仍可登录 |
| 救援模式 | 否 | 挂载卸盘操作 | 控制台异常 |
遇到密码相关故障,优先确认是否密钥可用、是否误改sshd_config导致拒绝密码认证。理清路径再选上述方案,基本都能恢复Linux云服务器的远程访问能力。