标签搜索

ssh常见故障排查及解决措施

mrui
2025-12-08 / 0 评论 / 2 阅读 / 正在检测是否收录...

关键排查方法

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

预防措施

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

常见 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 启用算法
密钥不匹配认证失败验证并更换正确的密钥对

私钥文件权限问题

错误信息:

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

问题分析:

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

解决措施:

chmod 400 /home/test/xxxx.pem

密钥匹配性验证

排查步骤:

  • 确认正确的私钥文件路径
  • 验证私钥与服务器公钥是否匹配
  • 验证命令:
# 本地生成公钥指纹
ssh-keygen -y -f /home/test/xxxx.pem
​
# 服务器端查看授权公钥
cat /home/ec2-user/.ssh/authorized_keys

服务器端配置问题定位

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

目录权限错误:
Authentication refused: bad ownership or modes for directory /home/ec2-user
密钥算法不支持:
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
0

评论 (0)

取消