无法从Git授权GitHub,提交代码后无法推送问题求助
解决Git推送GitHub时的授权失败问题
这问题我碰到过好多次了,核心原因是GitHub早在2021年8月就彻底停用了账户密码作为Git HTTPS操作的凭据——网页登录的密码和Git命令行的授权机制已经完全分开,所以你网页能正常登录,但在Git里输入账户密码肯定会触发授权失败。
下面给你两种靠谱的解决方法,选一种适合你的就行:
方法一:用个人访问令牌(PAT)替代密码
这是最直接的临时解决方案,适合不想改远程地址的情况:
- 登录GitHub网页,点击右上角头像 →
Settings→Developer settings→Personal access tokens→Tokens (classic) - 点击
Generate new token,给令牌起个好记的名字(比如Git Push Token),勾选repo权限(如果是私有仓库,确保相关权限都勾上),设置合适的过期时间,然后点击生成 - 一定要复制生成的令牌并妥善保存——GitHub只会显示这一次,刷新页面就看不到了
- 回到终端重新执行
git push,当提示输入密码时,把刚才复制的PAT粘贴进去就可以完成推送了
如果不想每次推送都输令牌,可以配置本地凭据缓存:
git config --global credential.helper store
执行后第一次输入PAT会被存在~/.git-credentials文件里,后续推送就自动用这个凭据了。
方法二:改用SSH密钥登录(更推荐,一劳永逸)
SSH密钥配置好后,后续所有Git操作都不用再输凭据,非常省心:
- 生成SSH密钥:在终端执行以下命令,一路回车用默认设置就行:
ssh-keygen -t ed25519 -C "ramazanemreosmanoglu@gmail.com"
- 查看并复制生成的公钥:
cat ~/.ssh/id_ed25519.pub
把输出的全部内容复制下来。
3. 回到GitHub网页,点击右上角头像 → Settings → SSH and GPG keys → New SSH key
4. 粘贴刚才复制的公钥内容,给密钥起个名字(比如Fedora Workstation),然后保存。
5. 将本地仓库的远程地址从HTTPS改为SSH:
git remote set-url origin git@github.com:ramazanemreosmanoglu/dynamic-wallpaper.git
- 测试SSH连接是否成功:
ssh -T git@github.com
如果看到类似Hi ramazanemreosmanoglu! You've successfully authenticated, but GitHub does not provide shell access.的提示,就说明配置成功了,之后再执行git push就不会有授权问题了。
额外排查点
- 你已经设置了全局的
user.name和user.email,可以再用git config --global --list确认一下是否正确 - 如果之前输错密码导致本地缓存了错误凭据,可以执行
git config --global --unset credential.helper清除缓存,之后重新输入正确的PAT或配置SSH
内容的提问来源于stack exchange,提问作者emre
相关产品推荐
相关产品推荐

