无法向GitHub推送新仓库,HTTPS令牌、SSH方式均失败如何解决?
问题排查与解决方案
一、核心矛盾定位
你配置的是HTTPS远程地址但报错为SSH公钥错误,说明实际生效的远程地址大概率为SSH格式,先执行以下命令确认远程配置:
git remote -v
如果返回的origin地址前缀为git@github.com:,执行以下命令替换为你复制的HTTPS地址:
git remote set-url origin https://github.com/你的用户名/你的仓库名.git
二、HTTPS协议推送解决方案
GitHub已停止支持账号密码验证HTTPS推送,必须使用个人访问令牌(PAT)作为验证凭证,按以下步骤操作:
- 生成PAT时必须勾选
repo权限,否则无法获得仓库推送权限 - 清空本地缓存的错误Git凭据:
- Windows:打开控制面板→凭据管理器→Windows凭据,删除所有git相关记录
- macOS:打开钥匙串访问,搜索github.com,删除对应凭据
- Linux:执行
git config --global --unset credential.helper临时关闭凭据缓存
- 重新执行推送命令
git push -u origin main,弹出验证框时,用户名填GitHub用户名,密码填生成的PAT即可
三、SSH协议推送解决方案
如果要使用SSH协议推送,按以下步骤修复公钥报错:
- 检查本地SSH密钥:执行
ls ~/.ssh(Windows执行dir C:\Users\你的用户名\.ssh),如果没有id_rsa和id_rsa.pub文件,执行ssh-keygen -t rsa -C "你的GitHub绑定邮箱",一路回车生成密钥 - 复制
id_rsa.pub文件的全部内容,进入GitHub设置的SSH密钥管理页面,新建SSH密钥并粘贴公钥内容保存 - 本地执行
ssh -T git@github.com测试连接,返回Hi 你的用户名! You've successfully authenticated, but GitHub does not provide shell access.即为配置成功 - 配置完成后执行
git push -u origin main即可推送
四、分支匹配注意事项
你本地当前分支为main,推送时直接指定main分支即可,无需使用master分支。
内容的提问来源于stack exchange,提问作者VaultDweller
相关产品推荐
相关产品推荐

