ssh登录异常问题排查
本教程参考chatgpt plus
快速排查思路(实战推荐顺序)
如果你在现场,建议直接按这个顺序来:
- 看报错信息
- 查日志
/var/log/secure
chage -l(密码过期)
faillock(是否被锁)
passwd -S(账号状态)
- 看 sshd_config
- 看 home 权限
- 看磁盘空间
常见问题总结(经验坑位)
- 密码过期(最常见)
- 登录失败被锁
- shell 被改成 nologin
- ssh 禁止密码登录
- home目录权限错误
- 磁盘满
- PAM策略限制
用户登录失败 → 排查 + 修复对照表
一、密码过期
🔍 如何判断
看到:
✅ 如何修复
方式1:直接重置密码(最常用)
方式2:延长密码有效期
1 2 3 4
| chage -M 90 username chage -M 99999 username
chage -E -1 -d 2026-10-02 -M 90 user
|
二、账号被锁定
🔍 如何判断
看到:
或:
1
| faillock --user username
|
✅ 如何修复
如果是失败次数锁定:
1
| faillock --user username --reset
|
三、账号过期(不是密码,是账号)
🔍 如何判断
看到:
✅ 如何修复
取消过期:
或设置新日期:
1
| chage -E 2026-12-31 username
|
四、Shell 被禁用(非常常见)
🔍 如何判断
1
| cat /etc/passwd | grep username
|
如果看到:
1 2
| /sbin/nologin /bin/false
|
✅ 如何修复
1
| usermod -s /bin/bash username
|
五、SSH 禁止登录
🔍 如何判断
1
| cat /etc/ssh/sshd_config
|
检查:
1 2 3 4
| PasswordAuthentication no PermitRootLogin no AllowUsers DenyUsers
|
✅ 如何修复
编辑:
修改为:
1
| PasswordAuthentication yes
|
如限制用户:
重启服务:
六、Home目录权限错误
🔍 如何判断
错误示例:
✅ 如何修复
1 2
| chown username:username /home/username chmod 700 /home/username
|
七、PAM 限制 / 登录策略
🔍 如何判断
1
| faillock --user username
|
或查看:
1
| cat /etc/pam.d/system-auth
|
✅ 如何修复
清除失败次数:
1
| faillock --user username --reset
|
如果策略太严格,可修改:
1
| vi /etc/pam.d/system-auth
|
例如:
👉 可以调大或关闭
八、磁盘满导致无法登录
🔍 如何判断
看到:
✅ 如何修复
清理日志:
或:
1
| journalctl --vacuum-time=3d
|
九、SELinux 导致登录失败
🔍 如何判断
如果是:
✅ 如何修复(排查用)
临时关闭测试:
如果确认是SELinux问题:
改为:
十、日志报错对应修复(重点)
常见日志 & 解决办法
1️⃣
👉 密码错误 / PAM问题
✔ 重置密码 + 检查PAM
2️⃣
👉 SSH限制
✔ 修改 AllowUsers
3️⃣
👉 账号过期
✔ chage -E -1
4️⃣
👉 权限问题
✔ 检查 home / shell
🔥 实战快速修复流程(推荐你用这个)
如果你在生产环境,直接按这个顺序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| tail -f /var/log/secure
faillock --user username --reset passwd -u username
passwd username
chage -l username chage -E -1 username
usermod -s /bin/bash username
chown -R username:username /home/username chmod 700 /home/username
systemctl restart sshd
|
如果你现在有具体报错(比如 secure 日志一段),直接贴出来,我可以帮你做到:
👉 一眼定位问题
👉 给你最小改动修复方案(避免误操作)
很多时候其实一条命令就能解决 👍
扩展sssd问题导致
有,而且在接入 LDAP / AD 域 的环境里,SSSD 出问题是非常常见的“登录失败元凶之一”。尤其是你这种做过集群/云平台的环境,更容易踩这个坑。
我帮你把 SSSD 相关排查 + 修复讲清楚,尽量做到你现场可以直接用。
一、什么时候要怀疑 SSSD?
如果你出现这些现象,优先怀疑 SSSD:
- 只有“域用户”登录失败(本地用户正常)
- 报错:
Authentication failure
User not known to the underlying authentication module
- 登录特别慢(卡10~30秒)
- 重启后偶尔恢复
id username 查不到域用户
二、SSSD 快速判断(三板斧)
1️⃣ 看用户是否能解析
👉 正常:能看到 uid/gid
👉 异常:no such user
2️⃣ 看 SSSD 服务状态
重点看:
3️⃣ 直接查 SSSD
👉 这个比 id 更关键
如果查不到,基本就是 SSSD / LDAP 问题
三、常见问题 + 修复方法
❌ 问题1:SSSD服务挂了
🔍 表现
看到:
✅ 修复
1 2
| systemctl restart sssd systemctl enable sssd
|
❌ 问题2:缓存异常(非常常见)
SSSD会缓存用户信息,缓存坏了就会登录失败
🔍 表现
✅ 修复(重点!)
1 2 3 4
| systemctl stop sssd rm -rf /var/lib/sss/db/* rm -rf /var/lib/sss/mc/* systemctl start sssd
|
👉 这是最有效的通用修复手段之一
❌ 问题3:无法连接 LDAP / AD
🔍 检查连通性
或:
1 2
| telnet 域控IP 389 telnet 域控IP 636
|
✅ 修复
👉 AD环境 DNS错了基本必挂
❌ 问题4:sssd.conf 配置错误
🔍 检查配置
重点看:
- domain 配置
- ldap_uri
- ldap_search_base
⚠️ 注意权限
1
| chmod 600 /etc/sssd/sssd.conf
|
否则 SSSD 会拒绝启动
✅ 修改后必须重启
❌ 问题5:时间不同步(隐藏杀手)
👉 AD / Kerberos 强依赖时间
🔍 检查
✅ 修复
或:
1
| timedatectl set-ntp true
|
❌ 问题6:Kerberos 票据问题
🔍 检查
如果失败 → 认证链路有问题
✅ 修复
❌ 问题7:PAM 没接 SSSD
🔍 检查
必须包含:
1 2 3
| passwd: files sss shadow: files sss group: files sss
|
✅ 修复
编辑后保存即可
四、日志排查(关键)
SSSD日志非常有用:
1
| tail -f /var/log/sssd/sssd.log
|
或:
常见报错:
Cannot contact LDAP server
Authentication failed
No such user
GSSAPI Error
五、终极一键修复套路(实战常用)
如果你懒得一个个查,可以直接用这套:
1 2 3 4 5 6 7 8 9 10 11 12
| systemctl restart sssd
systemctl stop sssd rm -rf /var/lib/sss/db/* rm -rf /var/lib/sss/mc/* systemctl start sssd
getent passwd username id username
|
六、经验总结(踩坑结论)
SSSD问题里最常见 TOP 5:
- 缓存坏了(最多)
- DNS错误
- AD连不上
- 时间不同步
- sssd.conf权限不对
👉 给你一个判断口诀
本地能登,域用户不能登 → 80% 是 SSSD
如果你现在有:
/var/log/sssd/sssd.log 一段日志
- 或
id / getent 的输出
贴出来,我可以帮你直接定位是哪一类问题,甚至一步到位给你修复命令。