ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Git推送GitHub报错 The authenticity of host + Permission denied(publickey) 解决方案

Git推送GitHub报错 The authenticity of host + Permission denied(publickey) 解决方案 环境Windows Git Bash前言第一次在使用Git Bash把本地项目推送到GitHub时连续遇到两层提示第一层是主机指纹确认输入yes之后紧接着报Permission denied (publickey)权限拒绝。本文记录完整排错过程一步一步解决适合初学 Git 的小伙伴参考。一、问题现象执行推送命令git push -u origin main终端完整日志如下xxxLAPTOP-PSCBTER0 MINGW64 /d/Users/tan/PyCharmProjects/Langchain_course_sichu (main) $ git push -u origin main The authenticity of host github.com (20.205.243.166) cant be established. ED25519 key fingerprint is: SHA256:DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4Uxxxxx This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added github.com (ED25519) to the list of known hosts. gitgithub.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.现象说明首次连接github.comSSH弹出主机可信确认输入yes成功加入信任列表。信任主机之后公钥认证失败代码无法推送到远程仓库。二、报错原理分析1. The authenticity of host 是什么这不是错误是SSH的安全保护机制。 本机第一次通过SSH协议访问GitHub服务器本地没有保存GitHub服务器公钥指纹为了防止中间人攻击SSH会询问用户是否信任该服务器。本次指纹为GitHub官方ED25519指纹可以放心输入yes。 输入yes之后GitHub主机信息写入known_hosts后续连接不再弹出该提示。2. Permission denied (publickey) 核心问题✅ 服务器信任已经通过❌本机SSH公钥没有添加到你的GitHub账号GitHub收到SSH连接请求但是识别不到这台电脑对应的公钥不知道访问者身份直接拒绝访问。 一句话总结密钥生成了但是公钥没有粘贴到GitHub网页后台。三、完整修复步骤Git Bash执行步骤1生成ED25519类型SSH密钥推荐将下面邮箱替换为你自己GitHub注册邮箱ssh-keygen -t ed25519 -C zzzzxxxxxqq.com执行后连续三次回车密钥保存路径直接回车使用默认路径Enter passphrase密钥密码回车不设置密码Confirm passphrase再次回车确认执行完成后在C:\Users\xxx\.ssh\目录生成两个文件id_ed25519私钥绝对不能泄露、不能发给任何人id_ed25519.pub公钥我们需要复制这个文件内容步骤2启动ssh-agent并加载私钥eval $(ssh-agent -s) ssh-add ~/.ssh/id_ed25519步骤3读取并复制公钥内容cat ~/.ssh/id_ed25519.pub终端输出一长串以ssh-ed25519开头的文本整行完整复制不要截断、不要丢末尾邮箱。步骤4GitHub网页后台添加SSH公钥登录GitHub官网右上角头像 →Settings左侧菜单栏选择SSH and GPG keys点击New SSH keyTitle自定义例如Windows-LAPTOP用来标记当前电脑Key type保持默认Key输入框粘贴刚刚复制的公钥点击Add SSH key保存步骤5测试SSH连通性ssh -T gitgithub.com✅ 成功输出提示是正常的GitHub不提供shell登录Hi Jenny-Tany! Youve successfully authenticated, but GitHub does not provide shell access.出现这句话代表SSH密钥配置全部完成。步骤6重新推送代码git push -u origin main此时代码就可以正常推送到GitHub仓库。四、备选方案不想配置SSH改用HTTPS推送如果不想配置SSH密钥可以切换远程仓库地址为HTTPS协议# 修改远程地址为HTTPS git remote set-url origin [https://github.com/Jenny-Tany/personal-chief.git](https://github.com/Jenny-Tany/personal-chief.git) git push -u origin mainHTTPS方式推送时密码处填写GitHub个人访问令牌Personal access token不再使用账号密码。五、踩坑总结避坑重点粘贴到GitHub的必须是.pub公钥文件千万不要粘贴私钥复制公钥要完整复制整行不能少字符、漏掉末尾邮箱ssh测试命令固定写gitgithub.com不要替换成自己用户名确认GitHub远程仓库已经提前创建仓库地址名称大小写一致如果旧密钥失效可以在GitHub的SSH管理页面删除旧密钥重新添加。六、小结The authenticity of host是首次连接安全确认输入yes即可真正导致推送失败的是Permission denied (publickey)根源就是公钥未绑定GitHub账号标准排错流程生成密钥 → GitHub添加公钥 → SSH连通测试 → push推送Windows Git Bash推荐使用ED25519密钥兼容性更好。文末小工具可选一键查看当前远程仓库地址快速判断当前是SSH还是HTTPS链接git remote -v
返回列表