返回列表 发布新帖
查看: 655|回复: 0

🔐 SSH Key 登录失败的排查指南(适用于 Linux 系统)

发表于 2025-6-23 16:37:05 | 查看全部 |阅读模式

这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!

您需要 登录 才可以下载或查看,没有账号?立即注册

×
使用 SSH 公钥(Key)登录是一种更加安全、自动化的方式,广泛用于日常运维、CI/CD 自动化、跳板机管理等场景。但有时候你会遇到 “明明配置了 SSH Key,却无法登录服务器” 的情况。本文将详细教你如何从 客户端、服务端、权限设置、配置文件 四个方面排查 SSH Key 登录失败的问题。
🧩 一、基本原理回顾
SSH Key 登录过程是一个“非对称加密验证过程”:
本地存有私钥:~/.ssh/id_rsa
服务端存有公钥:~/.ssh/authorized_keys
连接时,服务端验证你是否拥有与它保存的公钥匹配的私钥。
二、客户端排查步骤
1. 使用 -v 模式查看详细连接日志
  1. ssh -v user@remote_ip
复制代码
逐步分析输出日志,看是否有以下报错:
❌ 常见错误信息:
  • Permission denied (publickey)
  • Authentication failed.
  • No such identity file
2. 确认私钥是否存在、权限是否正确
  1. ls -l ~/.ssh/id_rsa
复制代码
  1. chmod 600 ~/.ssh/id_rsa
复制代码
  • 私钥权限必须为 600,不能为 777,否则会被 SSH 拒绝使用。
3. 指定使用哪个私钥(如果有多个)
  1. ssh -i ~/.ssh/your_key user@host
复制代码
或编辑 ~/.ssh/config 文件:
Host yourhost
    HostName 192.168.1.100
    User youruser
    IdentityFile ~/.ssh/your_key
🖥️ 三、服务端排查步骤
1. 检查公钥文件是否正确
  1. cat ~/.ssh/authorized_keys
复制代码
  • 公钥应为一整行:ssh-rsa AAAAB3... your_email
不能换行、不能有多余空格或回车
2. 权限设置是关键(必须精确)
  1. chmod 700 ~/.ssh
复制代码
  1. chmod 600 ~/.ssh/authorized_keys
复制代码
  1. chown -R username:username ~/.ssh
复制代码
  • SSH 是极度严格的,权限不对就直接拒绝!
3. 确认 sshd 是否允许公钥登录
检查 /etc/ssh/sshd_config:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
注意大小写和空格,修改后要重启 ssh 服务:
  1. sudo systemctl restart sshd
复制代码
🧱 四、日志分析(服务端)
查看 sshd 登录日志:
# Ubuntu/Debian
  1. sudo journalctl -u ssh
复制代码
# CentOS/RHEL
  1. sudo cat /var/log/secure
复制代码
搜索关键字:
  # CentOS
  1. grep sshd /var/log/secure | grep "Failed"
复制代码
常见输出:
sshd[12234]: Authentication refused: bad ownership or modes for directory /home/user/.ssh
sshd[12234]: Authentication refused: public key denied
📦 五、其他注意事项
问题解决方案
用户家目录权限过宽chmod 755 /home/username
SELinux 阻止 key 登录临时关闭 setenforce 0,或检查 audit.log
使用了 root 登录被禁止修改 sshd_config 中 PermitRootLogin yes
公钥格式错误或剪贴出错使用 ssh-copy-id 推荐导入方式
使用 ssh-copy-id 推荐操作:
  1. ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_ip
复制代码
🎯 六、排查模板总结
  • 本地私钥文件是否存在、权限是否正确?
  • 公钥是否写入服务器,内容完整、无换行?
  • 服务端 ~/.ssh/authorized_keys 权限是否严格?
  • sshd_config 是否启用公钥登录?
  • ssh 日志中是否有具体拒绝原因?
  • SELinux、防火墙或云平台安全组是否阻止?
✍️ 结语
SSH Key 登录失败是新手运维常见的“卡点”。本质上是权限控制非常严格+配置细节较多。学会从客户端输出、服务端配置与权限三方面逐一排查,就能迅速定位问题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2026 Suike Tech All Rights Reserved. 随客交流社区 (备案号:津ICP备19010126号) |Processed in 0.113262 second(s), 10 queries , Gzip On, MemCached On.
关灯 在本版发帖返回顶部
快速回复 返回顶部 返回列表