推送全新GitHub仓库时出现Permission denied (publickey)错误如何解决?
错误根因
该报错为SSH公钥身份验证失败导致,和本地仓库文件无关,因此删除本地仓库重试无法解决问题。绝大多数过时方案仍推荐使用RSA算法生成密钥,而目前GitHub已经停止支持加密强度不足的SHA-1格式RSA密钥,是旧方案失效的核心原因。
分步解决方案
- 检查本地是否存在可用SSH密钥
执行命令ls -al ~/.ssh(Windows系统可在资源管理器地址栏输入%USERPROFILE%\.ssh直接打开对应目录),确认是否存在id_ed25519(私钥文件)和id_ed25519.pub(公钥文件),存在则直接跳过生成密钥步骤。 - 生成符合GitHub要求的新SSH密钥
执行命令ssh-keygen -t ed25519 -C "你的GitHub账户绑定的邮箱地址",全程按回车即可,不需要额外设置密码的话直接留空确认。 - 绑定公钥到GitHub账户
执行命令cat ~/.ssh/id_ed25519.pub,完整复制输出的所有公钥内容。打开GitHub账户的Settings→Access→SSH and GPG keys页面,点击New SSH key,自定义填写标题后将复制的公钥内容粘贴到对应输入框保存即可。 - 验证SSH连接有效性
执行命令ssh -T git@github.com,如果返回Hi 你的GitHub用户名! You've successfully authenticated, but GitHub does not provide shell access.则说明身份验证已经成功。 - 确认本地仓库远程地址配置正确
进入本地仓库目录执行git remote -v,检查origin的地址是否为git@github.com:你的用户名/仓库名.git格式的SSH地址,如果是https开头的地址,可以执行命令git remote set-url origin git@github.com:你的用户名/仓库名.git修改为SSH格式,之后即可正常执行推送操作。
内容的提问来源于stack exchange,提问作者user16114868
相关产品推荐
相关产品推荐

