故障处理报告
悠悠
2025年11月29日

SSH 连接故障处理报告

故障概述

  • 故障时间: 2025年11月28日 15:12 - 15:27
  • 故障服务器: x.x.x.x
  • 故障现象: 无法通过 SSH 密钥认证登录 ec2-user 账户
  • 错误信息: Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

故障排查过程

第一阶段:私钥文件权限问题 (15:12-15:14)

初始错误:

WARNING: UNPROTECTED PRIVATE KEY FILE!
Permissions 0644 for 'xxxxx.pem' are too open.

问题分析:

  • 私钥文件权限为 0644(所有用户可读)
  • SSH 安全机制要求私钥文件仅所有者可访问

解决措施:

chmod 400 /home/test/xxxx.pem

结果: 权限警告消失,但认证仍然失败

第二阶段:密钥匹配性验证 (15:15-15:18)

排查步骤:

  1. 确认正确的私钥文件路径
  2. 验证私钥与服务器公钥是否匹配

验证命令:

# 本地生成公钥指纹
ssh-keygen -y -f /home/test/xxxx.pem

# 服务器端查看授权公钥
cat /home/ec2-user/.ssh/authorized_keys

验证结果: 公钥完全匹配,确认私钥正确

第三阶段:服务器端配置问题定位 (15:18-15:25)

关键发现:
通过查看服务器 SSH 日志 (/var/log/secure),发现两个关键错误:

  1. 目录权限错误:
Authentication refused: bad ownership or modes for directory /home/ec2-user
  1. 密钥算法不支持:
userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

根本原因分析

原因1:用户主目录权限配置错误

问题详情:

  • /home/ec2-user 目录的所有权或权限不符合 SSH 安全要求
  • SSH 要求用户主目录及 .ssh 目录必须有严格的权限控制

SSH 权限要求:

  • 用户主目录: 755 权限,所有者为用户本人
  • .ssh 目录: 700 权限,所有者为用户本人
  • authorized_keys 文件: 600 权限,所有者为用户本人

原因2:SSH 服务器禁用了 RSA 算法

问题详情:

  • 服务器 SSH 配置中未包含 ssh-rsa 算法
  • 客户端使用的是 RSA 类型的密钥
  • 新版本 OpenSSH (8.8+) 默认禁用了 SHA-1 相关的 RSA 算法

解决方案

完整修复命令

在服务器端以 root 用户执行:

# 1. 修复 ec2-user 主目录权限
chown ec2-user:ec2-user /home/ec2-user
chmod 755 /home/ec2-user

# 2. 修复 .ssh 目录权限
chmod 700 /home/ec2-user/.ssh
chmod 600 /home/ec2-user/.ssh/authorized_keys
chown -R ec2-user:ec2-user /home/ec2-user/.ssh

# 3. 启用 ssh-rsa 算法支持
echo "PubkeyAcceptedAlgorithms +ssh-rsa" >> /etc/ssh/sshd_config

# 4. 重启 SSH 服务
systemctl restart sshd

验证结果

修复后成功连接:

ssh -o IdentitiesOnly=yes -i xxxx.pem ec2-user@x.x.x.x

连接成功,问题完全解决。

经验总结

关键排查方法

  1. 客户端调试: 使用 ssh -v 参数查看详细连接过程
  2. 服务器日志: 检查 /var/log/securejournalctl -u sshd 获取服务器端错误
  3. 权限验证: 系统性检查文件和目录权限
  4. 密钥验证: 使用 ssh-keygen -y 验证密钥对匹配性

常见 SSH 认证失败原因

问题类型症状解决方法
私钥权限过开放UNPROTECTED PRIVATE KEY FILEchmod 400 私钥文件
主目录权限错误bad ownership or modeschmod 755 ~ + chown user:user ~
.ssh 目录权限错误Authentication refusedchmod 700 ~/.ssh
authorized_keys 权限错误认证失败无明确提示chmod 600 ~/.ssh/authorized_keys
密钥算法不支持key type not in PubkeyAcceptedAlgorithms修改 sshd_config 启用算法
密钥不匹配认证失败验证并更换正确的密钥对

预防措施

  1. 定期备份密钥: 避免密钥丢失导致无法访问
  2. 使用现代密钥算法: 推荐使用 ED25519 而非 RSA
  3. 保持权限正确: 使用自动化脚本定期检查关键文件权限
  4. 启用多种认证方式: 配置密码认证作为备用方案
  5. 监控 SSH 日志: 及时发现异常登录尝试

安全建议

  1. 修复完成后,建议生成新的 ED25519 密钥对:
ssh-keygen -t ed25519 -C "your_email@example.com"
  1. 考虑移除 PubkeyAcceptedAlgorithms +ssh-rsa 配置,改用更安全的密钥类型
  2. 定期审计 authorized_keys 文件,移除不再使用的公钥

附录:相关配置文件

SSH 客户端配置 (~/.ssh/config)

Host aliyun-server
    HostName x.x.x.x
    Port xx
    User ec2-user
    IdentityFile xxxxxx.pem
    IdentitiesOnly yes

SSH 服务器关键配置 (/etc/ssh/sshd_config)

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PubkeyAcceptedAlgorithms +ssh-rsa
StrictModes yes

报告生成时间: 2025年11月28日 15:27
故障解决时长: 15分钟
故障级别: P2 (服务不可用)
处理状态: 已解决

文章目录

博主介绍

热爱技术的云计算运维工程师,Python全栈工程师,分享开发经验与生活感悟。
欢迎关注我的微信公众号@运维躬行录,领取海量学习资料

微信二维码