服务器登录密码忘了,这在运维里并不少见。可能是很久没登录,也可能是接手别人的机器时凭证没交接清楚。阿里云 ECS 提供了几种找回访问权限的办法,成本差别不小。下面按从简单到复杂的顺序讲,说明每种方法适合什么情况、怎么操作,以及容易出问题的地方。

一、先看服务器现在是什么状态
动手前先确认三件事:实例能否正常启动,能否通过 SSH 登录,系统里还有没有其他管理员账号。答案不同,走的路也不同。
- 能正常运行,并且有其他管理员账号:直接在控制台修改密码即可。
- 能运行,但 SSH 连不上:先用控制台远程连接看一眼,问题多半出在 SSH 配置或安全组。
- 起不来,或者系统已经损坏:只能走救援模式或挂载系统盘。
二、控制台重置实例密码
这是步骤最少、影响最可控的办法。在 ECS 控制台为实例设置新密码后,需要重启实例才会生效,所以这一步的重点其实是安排好重启时间。
- 登录阿里云管理控制台,进入“云服务器 ECS”页面。
- 在实例列表中找到目标服务器,点击“更多”,选择“密码/密钥”,再点击“重置实例密码”。
- 输入新密码。通常需要 8 到 30 位,并且至少包含大写字母、小写字母、数字、特殊字符中的三类。
- 提交后按提示重启实例,然后用新密码验证登录。
重启会中断正在运行的业务。如果机器承载线上服务,最好选在低峰期操作,并提前确认服务能否随系统自动拉起。比如一个小电商团队的 root 密码只有已离职同事知道,比较稳妥的做法是:挑流量低的晚上,先通知客服暂停页面更新,再执行重置和重启,等服务恢复后,把新密码存进团队统一的密码管理工具。
三、用控制台远程连接排查
如果实例能启动,只是 SSH 连不上,可以先试试控制台的远程连接(VNC 方式)。它不依赖网络和 SSH 服务,能直接看到系统的登录界面。
如果能看到登录提示,说明系统本身基本正常,问题更可能在 SSH 配置、防火墙或安全组上。可以逐项检查:
- 安全组是否放行了 22 端口(Linux)或 3389 端口(Windows)。
- sshd 服务是否在运行。
- /etc/ssh/sshd_config 中是否关闭了密码登录,或者限制了允许登录的用户。
排查后如果确认是密码本身的问题,回到第二种方法重置即可。
四、救援模式或挂载系统盘修复
实例无法正常启动,或者系统文件损坏时,前面的办法都用不上。这时需要把故障实例的系统盘挂到另一台机器上,直接修改里面的密码文件。阿里云控制台也提供救援模式功能,具体入口和支持的系统类型请以官方文档为准。
- 先停止故障实例,并为系统盘创建快照。这是回退的保障,不能省。
- 创建一台同地域的救援实例,把故障实例的系统盘作为数据盘挂载上去。
- 登录救援实例,挂载对应的磁盘分区,修改其中的 /etc/shadow,或者通过 chroot 进入该环境执行 passwd。
- 卸载磁盘并从救援实例上分离,重新挂回原实例作为系统盘,启动后验证登录。
这一步直接操作磁盘,风险明显高于控制台重置。最容易出事的是分区编号和挂载点判断错误,把错的分区当成系统盘改了。操作前用 lsblk 之类的命令确认清楚。如果对这些操作不熟,找阿里云技术支持或有经验的同事协助,比自己硬试更省时间。
五、重置之后要补的几件事
恢复访问以后,如果不处理根本原因,同样的问题很快会再来一次。
- 改用 SSH 密钥登录:在控制台为实例绑定密钥对,确认密钥可用后,再在系统中关闭密码登录,能明显降低暴力破解的风险。
- 收紧安全组来源:22 或 3389 端口只对可信 IP 开放,不要对全网放开。
- 记录凭证归属:把管理账号、用途和负责人写进统一的文档或密码管理工具,人员变动时才不会再次失联。
- 定期清理账号:检查是否还有已经不用的用户,及时删除或锁定。
大多数情况下,控制台重置加一次重启就能解决问题。只有系统起不来,才值得花时间走救援流程。无论用哪种方法,动手前做好快照和业务通知,动手后补上密钥登录和安全组限制,下次就不用再从头找凭证。