新Ubuntu22.04系统用相同Git配置Push时出现认证失败
解决方案
你的问题核心是全局Git配置里的**个人访问令牌(PAT)**失效,或者新系统的凭证处理逻辑和旧系统不一致导致认证失败。以下是具体修复步骤:
1. 排查令牌有效性
先暂时禁用全局的URL替换配置,直接测试认证:
- 打开全局Git配置文件:
nano ~/.gitconfig - 找到下面这段配置,在开头加
#注释掉:#[url "https://api:<stuff that looks like a token>@github.com/"] # insteadOf = https://github.com - 保存退出后,尝试执行
git push,此时Git会提示你输入用户名和密码:- 用户名填你的GitHub账号名
gischer - 密码不要填账号登录密码,填个人访问令牌(PAT)
如果能成功push,说明原来的令牌已经过期或权限不足;如果还是失败,继续下一步。
- 用户名填你的GitHub账号名
2. 生成新的个人访问令牌(PAT)
GitHub早已停止支持账号密码直接通过HTTPS进行Git操作,必须使用PAT:
- 登录GitHub账号,进入「Settings」→「Developer settings」→「Personal access tokens」→「Tokens (classic)」
- 点击「Generate new token」,勾选至少
repo权限(私有仓库需要),如果是公开仓库勾选public_repo - 生成后复制令牌(只显示一次,务必保存好)
3. 重新配置Git认证
方法一:恢复URL替换配置(和旧系统逻辑一致)
- 再次编辑
~/.gitconfig,把之前注释的配置替换为新令牌(注意把api换成你的用户名gischer):[url "https://gischer:<你的新PAT>@github.com/"] insteadOf = https://github.com - 保存后测试
git push,应该就能正常认证。
方法二:使用系统凭证助手(更省心,自动保存令牌)
Ubuntu 22.04可以用libsecret作为凭证助手,自动保存PAT,不用每次手动配置URL:
- 安装依赖:
sudo apt update && sudo apt install libsecret-1-0 libsecret-1-dev cd /usr/share/doc/git/contrib/credential/libsecret sudo make - 修改全局Git配置的凭证助手:
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret - 执行
git push,输入用户名gischer和新PAT,系统会自动保存凭证,后续操作无需再输入。
4. 修复本地仓库的小问题
本地仓库配置里的remots是拼写错误,应该改成remotes,避免后续fetch出现问题:
- 打开本地仓库的配置文件:
nano .git/config - 把
fetch = +refs/heads/*:refs/remots/origin/*改成:fetch = +refs/heads/*:refs/remotes/origin/*
内容的提问来源于stack exchange,提问作者gischer
相关产品推荐
相关产品推荐

