修改Linux服务器密码的核心命令是passwd,登录后直接执行即可修改当前用户密码,而root用户可用passwd 用户名为指定用户重置密码。
修改密码前的必要准备
很多人在修改服务器密码时手忙脚乱,其实只要确认好两件事,整个过程就不会出岔子。
确认你拥有哪种登录权限
Linux服务器改密码有两条路径:一是当前登录用户改自己的密码,二是管理员(root或sudo权限)替其他用户改密码,先搞清楚自己属于哪种场景:
- 普通用户:只能修改自己的登录密码,执行
passwd后会让你先输入当前密码。 - root用户:可以直接修改任意用户的密码,包括自己,执行时不需要知道该用户的原密码。
- sudo权限用户:可以用
sudo passwd 用户名来重置他人密码,但通常需要输入自己的sudo密码。
建议先开启SSH密钥登录
改密码最怕的事是什么?改完发现登录不上了,而原来的SSH连接又断了,行业共识认为,在修改密码前最好先确认SSH密钥登录是否已经配置好,这样即使密码出问题,你依然能用密钥回到服务器,如果你还没配置密钥,至少要保证当前SSH连接不断开,用另开一个终端测试新密码后再关闭旧会话。
三种常用的密码修改命令
Linux下改密码的命令不止一个,每个适用场景不同,下面按使用频率排序。
passwd命令:日常修改的标准做法
这是最通用、最安全的密码修改方式,执行后系统会提示你输入新密码两遍,输入过程中屏幕不会有任何显示(连星号都没有),这是正常现象。
# 修改当前登录用户的密码 passwd # root用户替指定普通用户改密码(例如修改用户zhangsan) passwd zhangsan
注意:普通用户执行passwd时,系统会先要求输入当前密码,而root用户替别人改密码时,不需要知道对方原密码,直接设置新密码即可。
chpasswd命令:批量修改或管道输入
如果你需要一次修改多个用户密码,或者想在脚本里自动改密码,chpasswd会方便得多,它的输入格式是“用户名:新密码”,一行一个用户。

# 一条命令修改一个用户 echo "zhangsan:NewPass@2026" | chpasswd # 批量修改多个用户 echo -e "zhangsan:Pass123nlisi:Pass456" | chpasswd
这种方式适合在自动化部署脚本里使用,但注意不要在命令行里明文暴露密码,否则可能会被history记录,建议在使用后清除历史记录。
usermod命令:隐藏的密码修改入口
很多人不知道,usermod除了能改用户组、家目录之外,也能通过-p参数直接设置加密后的密码。
# 使用openssl生成加密密码,再交给usermod echo "NewPass@2026" | openssl passwd -6 -stdin usermod -p '$6$xxxxxx' zhangsan
但我不推荐普通用户用这个方式,因为openssl生成的密文格式容易出错,而且直接写在命令里会暴露密码,仅作了解即可。
修改密码时最容易踩的三个坑
改密码看似简单,但很多运维事故都发生在这一小步上,以下三个坑,你大概率遇到过其一。
密码强度校验不通过
Linux系统的pam_pwquality模块会检查新密码强度,如果你的密码太短、太简单,或者和用户名相同,系统会拒绝修改,解决办法有两种:
- 换一个更复杂的密码,建议至少12位,包含大小写字母、数字和特殊符号。
- 如果你是root用户,可以临时绕过强度校验(不推荐):
passwd --stdin zhangsan <<< "simplepass"
但普通用户没有这个权限,还是老老实实设个强密码吧。
忘记sudo密码导致无法提权
如果你不是root,而是靠sudo来管理服务器,结果自己忘了当前用户的密码,这时改密码就有点麻烦,因为sudo passwd也需要先验证你的当前密码,解决办法只能是让另一个有root权限的人帮你重置,或者在物理控制台上用恢复模式修改,这一场景在租用Linux服务器时经常遇到不少人只记得sodu密码,忘了普通用户密码,结果把自己锁在门外。
修改后SSH登录失败
问题通常不在密码本身,而在于SSH配置,如果服务器的

/etc/ssh/sshd_config里设置了PasswordAuthentication no,那么密码改得再正确也无法登录,修改完密码后,建议顺手检查一下SSH配置:
grep PasswordAuthentication /etc/ssh/sshd_config
返回值如果是no,请改成yes并重启sshd服务,不过为了安全,更推荐保留密钥登录,只在必要的时候临时开启密码认证。
找回忘记的root密码的应急方案
如果你把root密码忘了,且没有任何其他有权限的账户,那就只能走单用户模式重置,这需要物理访问或通过云控制台的VNC登录,不同系统的操作略有差异,但核心思路一致:在GRUB引导菜单里进入救援模式,然后挂载根文件系统并修改密码。
基于systemd的CentOS/RHEL系统操作步骤
- 重启服务器,在GRUB菜单出现时按
e键进入编辑模式。 - 找到以
linux开头的行,在末尾添加rd.break并按下Ctrl+X启动。 - 系统会进入紧急模式,此时根文件系统是只读的,执行:
mount -o remount,rw /sysroot chroot /sysroot passwd root
- 修改完成后执行
touch /.autorelabel(针对SELinux),然后退出并重启。
基于Ubuntu/Debian的系统操作步骤
- 重启后在GRUB菜单选“Advanced options”,再选“recovery mode”。
- 在恢复菜单里选择“root – Drop to root shell prompt”。
- 根文件系统通常已是可写状态,直接执行:
passwd 用户名
重置密码后重启即可。
这里提醒一点:如果你用的是云服务器,多数云厂商的控制台提供了“重置密码”功能,可以在不进入系统的情况下直接修改,比手工操作更安全,这也是很多人在处理服务器密码忘了怎么办时的首选方案。
如何验证密码修改成功且服务器状态正常
改完密码不能直接关掉窗口,至少要做三步验证。
新开一个SSH会话测试登录
保留当前登录窗口,重新打开一个终端连接服务器,输入新密码看能否正常登录,这一步能避免你被锁在外面,测试成功后,再退出旧会话。

检查认证日志确认无异常
登录成功后,查看系统日志里有没有失败的认证记录:
# CentOS/RHEL系统的日志路径 tail -n 20 /var/log/secure # Ubuntu/Debian系统的日志路径 tail -n 20 /var/log/auth.log
如果发现大量来自陌生IP的密码尝试,说明你的服务器正被暴力破解,建议改用密钥登录并设置fail2ban。
确认密码策略生效
查看当前密码有效期信息:
chage -l 用户名
这个命令会显示密码最后一次修改时间、过期时间、两次修改的最小间隔天数等,如果需要定期强制改密码,可以执行:
chage -M 90 用户名
设置密码每90天过期,过期后必须更换。
Linux服务器密码管理中的地域性差异与常见疑问
很多新手会纠结:不同国家的服务器供应商在重置密码时流程是否一样?其实系统层面的命令没有任何区别,passwd在全世界任何Linux发行版上都通用,区别只在于机房物理访问和云控制台的远程管理方式,比如你买了国内云服务器,控制台重置密码后需要重启实例才能生效,而国外VPS通常支持在线热重置,实操时看清楚服务商的后台提示就行。
关于修改服务器密码的常见疑问
Q1:普通用户改自己的密码时,新密码必须包含哪些字符?
取决于系统的pam_pwquality配置文件,默认策略通常要求密码长度至少8位,且不能全为数字或全为字母,你可以用cat /etc/security/pwquality.conf查看当前规则。
Q2:修改密码后,已经登录的SSH会话会掉线吗?
不会,已经建立的SSH会话不受影响,但新会话必须使用新密码,如果你想踢掉所有旧会话,可以执行pkill -u 用户名强制该用户下线。
Q3:用passwd和用控制台重置密码有什么区别?passwd是系统内修改,立即生效且无需重启;控制台重置由虚拟化层完成,通常需要重启服务器才能写入磁盘镜像,而且会重置你设置的密码策略,因此日常维护优先在系统内用passwd。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/745524.html

