Loading... # SSH 公钥认证失败问题排查 # 一、事件概述 ## 1. 事件背景 用户尝试通过 SSH 连接到服务器 8.140.218.139,连接建立后认证失败。 ## 2. 影响范围 ### A. 影响用户数 1 名用户 ### B. 影响时长 问题当场解决 ### C. 影响功能 SSH 远程登录功能 ## 3. 严重程度 P3 级问题(个人使用受阻,不影响业务) # 二、事件时间线 ## 1. 问题发现 ### A. 现象描述 执行 ssh root@8.140.218.139 后返回 Permission denied 错误 ### B. 初步判断 需要详细调试信息才能确定原因 ## 2. 诊断过程 ### A. 获取调试信息 执行 ssh -vvv root@8.140.218.139 获取详细日志 ### B. 日志分析 从调试输出中发现以下关键信息: - 连接成功建立 - 密钥交换正常完成 - 客户端尝试了两个私钥认证都被拒绝 - 服务器支持的认证方式:publickey、password - 最后错误:Permission denied (publickey,password) ## 3. 问题定位 客户端本地存在两个密钥文件: - /home/jacky/.ssh/id_rsa (RSA) - /home/jacky/.ssh/id_ed25519 (ED25519) 两个密钥都被服务器拒绝,说明服务器端的 authorized_keys 中没有对应的公钥。 ```mermaid graph TD A[执行SSH连接] --> B{密钥认证} B --> C[尝试id_rsa] C -->|失败| D[尝试id_ed25519] D -->|失败| E{密码认证} E -->|未尝试| F[认证失败] F --> G[Permission denied] ```  # 三、问题分析 ## 1. 直接原因 服务器端的 ~/.ssh/authorized_keys 文件中不存在客户端的公钥 ## 2. 根本原因 密钥未配置或密钥不匹配 ## 3. 深层原因分析 - 首次配置 SSH 密钥认证 - 服务器重装后密钥丢失 - 使用了不同的密钥文件 # 四、解决方案 ## 1. 方案一:使用密码登录 强制 SSH 使用密码认证而非公钥认证: ```bash ssh -o PreferredAuthentications=password root@8.140.218.139 ``` 优点:快速临时解决 缺点:每次都需要输入密码 ## 2. 方案二:复制公钥到服务器 使用 ssh-copy-id 工具自动配置: ```bash ssh-copy-id -i ~/.ssh/id_ed25519.pub root@8.140.218.139 ``` 或手动复制: ```bash cat ~/.ssh/id_ed25519.pub | ssh root@8.140.218.139 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys' ``` 优点:配置一次,永久免密登录 缺点:首次需要密码登录 ## 3. 方案三:检查服务器配置 登录服务器后检查 SSH 服务配置: ```bash grep Pubkey /etc/ssh/sshd_config ``` 确认以下配置正确: - PubkeyAuthentication yes - AuthorizedKeysFile .ssh/authorized_keys ```mermaid flowchart TD A[SSH连接问题] --> B{知道密码吗?} B -->|是| C[方案一:密码登录] B -->|否| D[需要其他方式访问] C --> E{想配置密钥吗?} E -->|是| F[方案二:复制公钥] E -->|否| G[继续使用密码] F --> H[检查服务器配置] D --> H ```  # 五、经验总结 ## 1. 排查思路 - 使用 -vvv 参数获取详细调试信息 - 关注 Authentications that can continue 字段 - 检查本地密钥文件是否被尝试 ## 2. SSH 认证机制理解 SSH 默认按以下顺序尝试认证: 1. 公钥认证(尝试所有本地私钥) 2. 密码认证(如果服务器允许) 如果公钥认证全部失败,且客户端配置为优先公钥,可能不会自动降级到密码认证。 ## 3. 最佳实践 - 首次配置服务器时立即设置密钥认证 - 禁用密码登录提高安全性(PermitEmptyPasswords no) - 定期备份 authorized_keys 文件 - 使用 ssh-copy-id 简化配置过程 # 六、相关知识 ## 1. SSH 密钥类型对比 | 密钥类型 | 安全性 | 兼容性 | 推荐度 | |---------|-------|-------|--------| | ED25519 | 高 | 现代系统 | 强烈推荐 | | RSA 2048 | 中 | 所有系统 | 兼容性首选 | | RSA 4096 | 中高 | 所有系统 | 安全性首选 | | ECDSA | 高 | 现代系统 | 可选 | ## 2. 常用 SSH 调试参数 - -v:基本调试信息 - -vv:更详细的调试信息 - -vvv:最详细的调试信息 - -o PreferredAuthentications=password:强制使用密码认证 *** ## 参考资料 1. [OpenSSH 官方文档](https://www.openssh.com/manual.html) 2. [SSH 密钥管理最佳实践](https://www.ssh.com/academy/ssh/key) 最后修改:2026 年 04 月 14 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏