修改Linux服务器密码是系统管理和安全维护的基础操作,根据登录方式(本地/远程)、用户权限(普通用户/root)以及是否忘记密码等不同场景,操作方法有所差异,以下是详细的操作步骤、注意事项及常见问题处理,帮助管理员安全高效地完成密码修改。
本地登录修改当前用户密码
当已通过控制台或本地终端登录Linux服务器时,修改当前用户的密码需使用passwd
命令,操作流程如下:
-
执行passwd命令
在终端输入passwd
,按回车执行,如果是普通用户,系统会要求先输入当前密码进行验证;如果是root用户,可直接跳过验证。passwd
-
输入新密码
根据提示输入两次新密码(第二次输入为确认,终端不会显示字符),密码需符合系统策略(如长度、字符类型),若不符合要求会提示重新输入。 -
确认修改成功
密码修改成功后,终端会显示passwd: password updated successfully
(密码更新成功),新密码立即生效,后续登录需使用新密码。
本地登录修改其他用户密码(需root权限)
若需修改其他用户的密码(如修改普通用户test
的密码),必须使用root权限操作,步骤如下:
-
切换至root用户
普通用户可通过su -
命令切换至root(需输入root密码),或直接使用sudo passwd username
(需配置sudo权限)。su - # 输入root密码后切换
-
执行passwd命令指定用户
使用passwd + 用户名
修改目标用户密码,例如修改test
用户:passwd test
-
输入并确认新密码
根据提示输入两次新密码(无需输入目标用户旧密码),root用户可直接为其他用户设置任意符合策略的密码。
远程SSH登录修改密码
通过SSH远程连接服务器时,修改密码的操作与本地登录一致,但需确保SSH服务正常运行且网络连通。
-
建立SSH连接
使用ssh
命令连接服务器,例如以test
用户远程登录168.1.100
:ssh test@192.168.1.100
-
执行passwd命令
登录成功后,与本地操作一致,输入passwd
修改当前用户密码,或root用户通过passwd username
修改其他用户密码。 -
测试新密码
修改完成后,可退出当前会话(exit
),重新使用SSH连接测试新密码是否生效。
忘记密码的应急处理
若忘记root密码或关键用户密码,需通过“单用户模式”或“恢复模式”绕过密码验证重置密码,具体操作因Linux发行版(如CentOS/RHEL、Ubuntu/Debian)而异。
(一)CentOS/RHEL系统(以CentOS 7为例)
-
重启服务器并进入GRUB菜单
重启服务器时,长按Shift
键(或根据BIOS/UEFI设置按Esc
),进入GRUB引导菜单。 -
编辑内核启动参数
选择默认内核版本,按e
键进入编辑模式,找到以linux16
或linuxefi
开头的行,在行尾添加rd.break
(临时中断启动进入initramfs环境)。 -
切换至系统根目录并修改密码
- 按
Ctrl+X
启动系统,进入紧急模式后,执行以下命令挂载系统根目录:mount -o remount,rw /sysroot
- 切换至系统根环境:
chroot /sysroot
- 使用
passwd
命令重置root密码(步骤同前),完成后输入exit
退出chroot环境。
- 按
-
重启并验证
执行reboot
重启服务器,新密码生效,若系统启用了SELinux,建议首次重启后执行touch /.autorelabel
(触发文件标签重标记),避免权限异常。
(二)Ubuntu/Debian系统
-
重启进入GRUB菜单
重启时长按Shift
键,进入GRUB引导界面。 -
选择恢复模式
选择Advanced options,进入当前内核的Recovery模式,再选择“root Drop to root shell prompt”(进入root终端)。 -
挂载根目录并修改密码
- 挂载根目录为可读写模式:
mount -o rw,remount /
- 使用
passwd
命令重置root密码,完成后输入reboot
重启。
- 挂载根目录为可读写模式:
密码策略与注意事项
为提升系统安全性,密码修改需遵循以下策略,可通过表格对比关键要求:
策略项 | 建议要求 |
---|---|
密码长度 | 至少8位,推荐12位以上 |
字符复杂度 | 包含大写字母(A-Z)、小写字母(a-z)、数字(0-9)、特殊字符(如!@#$%^&*) |
定期更换 | 建议每90天更换一次,避免长期使用相同密码 |
密码历史记录 | 通过/etc/login.defs 配置PASS_MAX_DAYS (密码有效期)和PASS_MIN_DAYS (修改间隔) |
额外注意事项:
- 修改密码后,及时清理终端历史记录(
history -c
),避免密码泄露。 - 若服务器使用密钥认证+密码双重验证,修改密码后需确保密钥认证仍有效。
- 批量修改多台服务器密码时,建议使用Ansible、SaltStack等自动化工具,避免手动操作遗漏。
相关问答FAQs
Q1:修改密码后提示“Authentication token manipulation error”,如何解决?
A:该错误通常由磁盘空间不足、/etc/shadow
文件权限异常或SELinux强制模式导致,可按以下步骤排查:
- 检查磁盘空间:
df -h
,若根目录()使用率超过90%,清理临时文件(如/tmp
目录)。 - 修复
/etc/shadow
权限:chmod 600 /etc/shadow
(确保仅root可读写)。 - 临时关闭SELinux(测试用):
setenforce 0
,若问题解决,则需检查SELinux策略或启用allowpassword
布尔值(setsebool -P allowpasswordonkey on
)。
Q2:如何通过脚本批量修改多台Linux服务器的密码?
A:可结合sshpass
和expect
工具实现非交互式批量修改,或使用Ansible Playbook(推荐),以下为Ansible示例:
- 安装Ansible:
yum install ansible -y
(CentOS)或apt install ansible -y
(Ubuntu)。 - 创建主机清单文件
hosts.ini
,定义目标服务器:[servers] server1 ansible_ssh_user=root ansible_ssh_host=192.168.1.101 server2 ansible_ssh_user=root ansible_ssh_host=192.168.1.102
- 创建Playbook
reset_password.yml
:--- - name: Batch reset password hosts: servers tasks: - name: Update root password user: name: root password: "{{ 'NewPass123!' | password_hash('sha512') }}" # 替换为自定义密码 update_password: always
- 执行Playbook:
ansible-playbook -i hosts.ini reset_password.yml
,输入SSH密码或配置SSH免密后即可批量修改。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/33477.html