网站首页 > 技术文章 正文
# 服务器密码错误被锁定解决方案
当服务器因多次密码错误导致账户被锁定时,可以按照以下步骤进行排查和解决:
## 一、确认锁定状态
### 1. 检查账户锁定状态(Linux)
```bash
# 查看账户锁定状态
sudo pam_tally2 --user=用户名
# 或使用faillock(较新系统)
sudo faillock --user 用户名
```
### 2. 检查Windows账户锁定
```powershell
# PowerShell查看账户状态
Get-LocalUser -Name "用户名" | Select-Object Name,Enabled,AccountLockout
```
## 二、解锁账户方法
### 1. Linux系统解锁
#### 方法1:使用pam_tally2解锁
```bash
# 重置失败计数
sudo pam_tally2 --user=用户名 --reset
# 或使用faillock
sudo faillock --user 用户名 --reset
```
#### 方法2:手动修改失败记录文件
```bash
# 对于使用pam_tally.so的系统
sudo vim /var/log/faillog # 编辑或删除对应记录
sudo vim /var/log/secure # 查看详细失败日志
```
### 2. Windows系统解锁
#### 方法1:图形界面解锁
1. 打开"计算机管理" → "本地用户和组" → "用户"
2. 右键被锁账户 → 属性 → 取消勾选"账户已禁用"
#### 方法2:命令行解锁
```powershell
# PowerShell解锁
Unlock-ADAccount -Identity 用户名 # AD域账户
Unlock-LocalUser -Name "用户名" # 本地账户
```
#### 方法3:修改注册表(极端情况)
1. 运行 `regedit`
2. 导航到 `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa`
3. 修改 `lockoutthreshold` 值为0(禁用账户锁定策略)
## 三、临时解决方案(紧急访问)
### 1. Linux单用户模式
1. 重启服务器
2. 在GRUB菜单选择恢复模式
3. 进入root shell修改密码或解锁
### 2. Windows安全模式
1. 重启按F8进入安全模式
2. 使用管理员账户登录并重置密码
## 四、修改安全策略防止再次锁定
### 1. Linux调整PAM配置
```bash
sudo vim /etc/pam.d/system-auth # 或对应PAM配置文件
# 修改以下参数(示例):
auth required pam_tally2.so deny=5 unlock_time=300 even_deny_root root_unlock_time=300
```
参数说明:
- `deny=5`:允许5次失败尝试
- `unlock_time=300`:锁定300秒(5分钟)
- `even_deny_root`:包括root账户
- `root_unlock_time`:root账户解锁时间
### 2. Windows调整账户策略
```powershell
# 查看当前策略
secedit /export /cfg policy.inf
# 修改策略(示例):
net accounts /lockoutthreshold:10 # 允许10次失败
net accounts /lockoutduration:30 # 锁定30分钟
net accounts /lockoutwindow:60 # 观察窗口60分钟
```
## 五、根本原因排查
1. **检查攻击迹象**:
```bash
# 查看失败登录记录
sudo grep "Failed password" /var/log/auth.log
sudo lastb | head -20
```
2. **检查自动化脚本**:
- 确认是否有脚本使用过期密码
- 检查cron作业和CI/CD流水线
3. **检查网络设备**:
- 路由器/NAS等设备可能尝试使用旧密码连接
## 六、预防措施
1. **设置强密码策略**:
```bash
# Linux修改密码复杂度
sudo vim /etc/pam.d/common-password
# 添加:password requisite pam_pwquality.so retry=3 minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
```
2. **配置SSH密钥认证**:
```bash
# 禁用密码认证(推荐)
sudo vim /etc/ssh/sshd_config
# 修改:PasswordAuthentication no
sudo systemctl restart sshd
```
3. **实施账户锁定告警**:
```bash
# 设置日志监控(如fail2ban)
sudo apt install fail2ban
sudo systemctl enable fail2ban
```
4. **定期密码轮换**:
```bash
# 设置密码过期策略
sudo chage -M 90 用户名 # 90天过期
```
## 七、特殊情况处理
### 1. 云服务器无法解锁
- 使用云平台提供的VNC控制台
- 利用云厂商提供的救援模式
- 通过系统盘挂载方式重置
### 2. Active Directory账户锁定
```powershell
# 查询锁定来源域控制器
Get-ADUser -Identity 用户名 -Properties LockedOut,LastBadPasswordAttempt
# 域策略调整
Set-ADAccountPolicy -Identity "默认域策略" -LockoutThreshold 10 -LockoutDuration 00:30:00
```
### 3. 数据库账户锁定
```sql
-- Oracle解锁示例
ALTER USER 用户名 ACCOUNT UNLOCK;
-- MySQL解锁
ALTER USER '用户名'@'主机' ACCOUNT UNLOCK;
```
通过以上方法,您可以有效解决服务器密码错误导致的账户锁定问题,并根据实际情况选择最适合的预防措施。
- 上一篇: 2分钟,快速认识什么是SQL(什么是sql?)
- 下一篇: Innodb中的事务隔离级别和锁的关系
猜你喜欢
- 2025-07-28 Innodb中的事务隔离级别和锁的关系
- 2024-10-29 Innodb中的事务隔离级别和锁的关系
- 2024-10-29 oracle维护手册(四) oracle维保必须连续买么
- 2024-10-29 TestComplete v12.0版本更新,新增支持Oracle表等多项功能
- 2024-10-29 Oracle宣布课程:OCI 2024 容器引擎 Kubernetes 专家课程
- 2024-10-29 一次生产库的Oracle 锁处理 oracle数据库死锁怎么解决
- 2024-10-29 关于oracle对象统计信息锁定的解决办法(ORA-200...
- 2024-10-29 Oracle数据库扩展语言PL/SQL之锁 oracle数据库中的锁
- 2024-10-29 plsql查看是否锁表,锁模式等,以及解锁SQL
- 2024-10-29 Oracle锁表解决方法 oracle锁表是什么意思
你 发表评论:
欢迎- 635℃几个Oracle空值处理函数 oracle处理null值的函数
- 628℃Oracle分析函数之Lag和Lead()使用
- 615℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 612℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 608℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 602℃【数据统计分析】详解Oracle分组函数之CUBE
- 589℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 575℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)