徐中民 2025-06-30 09:05 采纳率: 98.9%
浏览 22
已采纳

CentOS 7 SSH服务器拒绝密码登录的常见原因及解决方法

**问题描述:** 在使用CentOS 7时,用户通过SSH尝试密码登录服务器时被拒绝,系统提示“Permission denied (password)”。请分析可能导致该问题的常见原因,并提供相应的解决方法。
  • 写回答

1条回答 默认 最新

  • 大乘虚怀苦 2025-06-30 09:06
    关注

    CentOS 7 SSH 密码登录失败:Permission denied (password) 分析与解决

    1. 问题描述

    在使用 CentOS 7 操作系统时,用户尝试通过 SSH 使用密码方式登录服务器时,出现如下错误提示:

    Permission denied (password).

    该问题通常意味着客户端提供的用户名和密码未能通过服务器的身份验证机制。

    2. 常见原因分析

    1. 密码输入错误
    2. SSH 配置文件限制了密码登录
    3. SELinux 或防火墙阻止连接
    4. 用户权限或账户锁定问题
    5. SSH 服务未正常运行
    6. 公钥认证干扰密码登录流程
    7. 键盘交互模式被禁用
    8. SSH 客户端配置异常
    9. PAM 模块配置错误
    10. 系统资源或安全策略限制(如 faillock)

    3. 排查流程图

    graph TD
    A[开始] --> B{是否输入正确用户名和密码?}
    B -- 否 --> C[重新输入]
    B -- 是 --> D{SSH服务是否运行?}
    D -- 否 --> E[启动sshd服务]
    D -- 是 --> F{是否启用密码登录?}
    F -- 否 --> G[修改/etc/ssh/sshd_config]
    F -- 是 --> H{是否有PAM模块限制?}
    H -- 是 --> I[检查faillock、authconfig等]
    H -- 否 --> J{是否被SELinux或防火墙拦截?}
    J -- 是 --> K[调整策略或关闭测试]
    J -- 否 --> L[其他排查项]
        

    4. 解决方法详解

    序号可能原因验证命令/步骤解决方案
    1密码错误手动确认输入重试并确保大小写、特殊字符正确
    2SSH 禁用密码登录cat /etc/ssh/sshd_config | grep PasswordAuthentication设置 PasswordAuthentication yes 并重启 sshd
    3SSH 服务未运行systemctl status sshdsystemctl start sshd
    4用户被锁定passwd -S usernamepasswd -u username 解锁账户
    5SELinux 阻止访问getenforcesetsebool -P allow_sshd_root_login=1 或临时 setenforce 0
    6防火墙限制firewall-cmd --list-all添加规则:firewall-cmd --permanent --add-port=22/tcp && firewall-cmd --reload
    7公钥认证干扰ls -la ~/.ssh/authorized_keys清空或检查 authorized_keys 文件内容
    8KeyboardInteractive 被禁用grep ChallengeResponseAuthentication /etc/ssh/sshd_config设置为 no 或 yes,并保持一致性
    9PAM 认证失败journalctl -xe | grep sshd查看日志定位具体 PAM 错误,例如 faillock 锁定
    10系统安全策略限制faillock --user usernamefaillock --reset --user username

    5. 日志分析建议

    SSH 登录失败时,系统日志是关键的排查依据。建议查看以下日志:

    tail -f /var/log/secure

    示例输出:

    sshd[pid]: pam_unix(sshd:auth): authentication failure; logname=... user=root

    根据日志中的关键词判断失败类型,如“authentication failure”、“max retries exceeded”等。

    6. 扩展排查思路

    • 尝试使用 root 用户登录时需确认 PermitRootLogin 是否开启
    • 检查是否存在 .ssh 目录权限问题(建议权限为 700)
    • 检查 authorized_keys 文件权限(建议为 600)
    • 尝试更换 SSH 客户端工具进行测试,排除本地配置干扰
    • 考虑 SELinux 或 AppArmor 的上下文限制
    • 使用 ssh -v 参数获取详细调试信息
    • 检查服务器时间是否同步,防止 Kerberos 或 OTP 类认证失败
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 6月30日