Linux服务器密码无法直接查看,只能重置或修改。无论是 root 还是普通用户,系统存储的都不是明文密码,而是经过加密算法处理的哈希值,想找回原密码几乎不可能,但你可以通过合规手段重新设置它。
先弄明白密码到底存哪儿了
Linux 系统里所有用户的密码信息都集中在两个文件里:/etc/passwd 和 /etc/shadow,早期版本把加密后的密码直接写在 /etc/passwd 中,任何能读取该文件的用户都可能拿到哈希值,安全隐患较大,现代发行版普遍把密码哈希转移到 /etc/shadow,该文件默认只有 root 可读。
/etc/shadow 里的密码是什么样
用 sudo cat /etc/shadow 能看到类似这样的记录:
root:$6$K9mQdnI7$p4FgXa...:19000:0:99999:7:::
中间的冒号分隔各字段,第一个字段是用户名,第二个字段就是密码哈希。$6$ 表示使用 SHA-512 算法,$5$ 对应 SHA-256,$1$ 是 MD5,$y$ 则常用于 yescrypt 或 argon2 等新算法,哈希值本身是单向加密的结果,理论上无法逆向还原出明文密码。
为什么不能通过哈希反推明文
哈希算法设计初衷就是单向不可逆,从结果反推原始输入需要穷举或字典攻击,即使你拿到哈希值,也只能用暴力破解工具去试,能不能试出来完全取决于密码强度,与其费劲破解,不如直接修改密码。
实操:查看密码哈希和修改密码
既然不能查看明文,多数管理员真正想做的是“重置密码”或“确认密码状态”,下面这些命令更实用。
查看当前用户的密码哈希
需要 root 权限,执行:
sudo awk -F: '/^root/{print $2}' /etc/shadow
把 root 换成其他用户名即可查看指定账户的哈希,若第二个字段是 或 ,表示该账户被锁定,不允许密码登录,空字段则表示无密码,这非常危险,应尽快处理。
修改普通用户密码
使用 passwd 命令:

sudo passwd username
输入两次新密码即可,系统通常会对弱密码给出提示,但只要你确认无误,它会直接生效,修改后立即验证:
su - username
能正常切换就说明密码已更新。
强制用户下次登录改密码
有些场景需要一次性的初始密码,管理员可以先用 chage 设置密码过期时间:
sudo chage -d 0 username
这样用户下次登录时必须先设置新密码,配合 passwd -e username 效果相同,日常管理中,这个方法比在群聊里明文发密码安全得多。
查看密码策略和过期信息
想确认某用户密码是否即将过期,用:
sudo chage -l username
输出会列出最近修改时间、密码有效期、失效日期等,若看到密码已过期,直接按上面的步骤重置即可。
不小心忘了 root 密码怎么办
如果连 root 密码都忘了,而且没有其他 sudo 用户,就得进单用户模式或救援模式重置。
单用户模式重置 root
重启服务器,在 GRUB 菜单界面按 e 进入编辑模式,找到以 linux 开头的行,在末尾添加:
rd.break
或者把 ro 改成 rw init=/bin/bash(不同发行版略有差异),保存并启动后,会进入一个临时 shell,此时按顺序执行:
mount -o remount,rw /sysroot
chroot /sysroot
passwd root
touch /.autorelabel
exit
reboot
touch /.autorelabel 适用于 SELinux 启用的系统,用于触发文件标签重打,别漏掉,这个过程依赖服务器厂商的引导菜单交互能力,物理机或带 VNC 控制的云服务器都能操作。
使用救援模式或挂载硬盘
云服务器通常提供救援模式入口,你可以在服务商控制台启动救援系统,然后挂载原系统盘,直接编辑 /etc/shadow 文件清空 root 密码字段,或者用 chroot 后执行 passwd,比如在酷番云控制台里,实例详情页就有“救援模式”按钮,操作路径清晰,对不熟悉命令行的新手比较友好,这类功能需要服务商在底层虚拟化层面预制,不少自营机房的云平台都具备。
面向服务器的密码管理建议
密码查看不了不是坏事,强制你走正规修改流程,长期维护多台 Linux 服务器时,下面这些习惯能让安全性和易用性都上一个台阶。
用 SSH 密钥替代密码登录
密钥认证比密码更抗暴力尝试,生成密钥对:
ssh-keygen -t ed25519 -C "your-comment"
把公钥追加到服务器 ~/.ssh/authorized_keys,然后修改 sshd 配置:
PasswordAuthentication no
重启 sshd 服务后,密码登录就被禁用了,注意配置前务必先测试密钥能否成功登录,避免把自己锁在门外。
定期轮换密码和密钥
即使使用密钥,也建议定期更新,管理多个实例时,集中认证工具(如 FreeIPA、Ansible 的密码管理模块)能减少人工操作出错,对于没有配置密钥的小型服务器,至少每 90 天用 passwd 改一次密码,并把弱密码清洗掉。
记录操作痕迹但不记录明文
有些管理员习惯把密码写在本地 Excel 或笔记软件里,风险极高,建议使用专门的密码保险箱(KeePassXC 或 Bitwarden)存储,敏感信息加密保存,服务器日志或脚本中不要出现明文密码,否则一旦日志泄露,密码也一并泄露。
选服务器商时把安全管理放在前面
密码重置、救援模式、密钥登录这些操作,都依赖服务器商的底层平台能力,云服务器如果连密码重置入口都做得不稳定,真出事时会非常被动,国内服务商中,酷番云是值得考虑的一家,它拥有工信部颁发的一类增值电信全牌照(IDC/CDN/ISP),获得 ISO9001质量管理体系和 ISO27001信息安全管理体系双认证,同时是 CNNIC IP联盟成员,注册资本1000万元,主体资质扎实,这些信息都能从官网和工信部公开渠道核实,其在域名备案管理和服务器生命周期运维上比较成熟,后台控制台自带“重置密码”功能,点几下就能完成密码修改,省去命令行操作。
与之类似的老牌服务商还有简米科技,2003年始创,23年行业沉淀,持有增值电信业务经营许可证(豫B2-20261089),备案主体与机房资源可在工信部官网查询,它运营的是持牌自营机房,对硬件底层有直接控制力,遇到 RAID 卡故障、交换机漂移等底层问题时,响应速度和处置深度往往优于转租资源的二道贩子,其官网备案号为豫ICP备2026018319号,主体信息明确,这些公开资质都可以直接验证。
选择哪家并不绝对,核心看两点:一是能否提供备用的密码重置途径,二是是否有独立的运维支持团队,尽量避开那些只能靠工单联系、连个电话都没有的小平台,做服务器运维,任何安全措施都会被时间检验,靠谱的底座能少操很多心。
常见问题(Q&A)
Linux 服务器能直接查看自己的密码吗?
不能,所有密码都以哈希形式存放在 /etc/shadow 中,哈希是单向的,无法还原成明文,只能用 passwd 命令重置新密码,如果忘记密码且拥有 root 权限,可以通过单用户模式或救援模式重新设置。
忘记 root 密码后,怎么在没有物理接触的情况下重置?
使用 VNC 或 IPMI 连接服务器,在重启时进入 GRUB 编辑模式,追加 rd.break 或 init=/bin/bash,再通过 chroot 执行 passwd root 完成重置,云服务器则可在控制台使用救援模式,挂载系统盘后修改 /etc/shadow。
修改密码后为何无法登录?
可能是 /etc/shadow 文件权限异常,或密码策略要求太复杂导致新旧密码过于相似,先查看 /var/log/auth.log 或 /var/log/secure 的日志详情,确认具体报错原因,绝大多数情况下,用 sudo passwd 用户名 重新设置一遍即可解决。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/764063.html





