故障排查

GitHub公钥认证失败:Permission denied (publickey)怎么排查

资料核对与更新:2026-10-25 · 阅读约3分钟

GitHub提示Permission denied (publickey)时,先核对远程地址、执行用户和实际使用的SSH密钥。本文给出无需反复重建密钥的检查顺序,并区分账号认证与仓库授权。

先确认连接方式与执行用户

GitHub公钥认证失败,通常表示服务器没有接受本次连接提供的密钥。先运行git remote -v查看远程地址;HTTPS地址不使用这套SSH认证流程。对于github.com,SSH连接用户名应为git,而不是你的GitHub账号名称。

接着确认当前是谁在执行命令。自己在终端操作、宝塔计划任务和网站进程,可能分别使用不同系统用户及主目录。不要因为普通用户失败就改用sudo重试,否则可能换成另一套SSH配置,掩盖真正原因。

检查实际提供了哪把密钥

运行ssh -vT git@github.com,观察调试输出中尝试使用的密钥。首次连接需要核对GitHub官方公布的主机指纹,不能随意接受陌生指纹。若有多把密钥,可用ssh -i指定预期私钥进行诊断,再整理SSH配置。

核对所用私钥对应的公钥,是否已经添加到正确GitHub账号。只上传公钥,私钥留在本机。分享排错信息前,应删去用户名、路径和其他敏感信息,不要把整份密钥文件贴进聊天或工单。

认证成功后再查仓库权限

连接测试成功时,GitHub会显示认证对应的账号,但不提供普通交互式Shell;该测试退出码为1并不一定代表认证失败,应结合提示判断。如果认证到了错误账号,就调整密钥选择;如果账号正确而仓库仍无法访问,再检查仓库地址、协作者权限及组织授权。

最后,在真正执行部署任务的同一用户环境下重试拉取。保存有效配置比反复生成新密钥更容易维护,也能避免无意间把其他项目的连接弄坏。

参考资料

资料核对日期:2026年10月24日。本文为综合官方文档整理的原创排查指南,未声称进行本站故障实测。

- GitHub:Permission denied (publickey)

- GitHub:测试SSH连接

本文新增价值
本文按照可观察的请求和日志组织诊断顺序,提供对照测试、分层定位与修复验收方法,帮助读者减少盲目修改配置,并明确说明不同运行环境的适用边界。