git push认证失败源于凭据管理器中存储了过期或错误的账号密码,需根据系统清理对应凭据(windows凭据管理器、macos钥匙串、linux git-credential-libsecret等),并确保https协议下使用personal access token替代密码。

Git命令行执行git push时提示Authentication failed
这是 Git 凭据缓存里存了过期或错误的账号密码,不是 VSCode 本身的问题。VSCode 的 Git 面板只是调用了系统 Git,认证失败源头在 Git 凭据管理器。
实操建议:
- 先确认你用的是 HTTPS 还是 SSH:如果远程地址是
https://github.com/xxx/yyy.git,就走凭据管理器;如果是git@github.com:xxx/yyy.git,那该配 SSH key,和密码无关 - Windows 用户大概率用了 Windows 凭据管理器(Credential Manager),去「控制面板 → 用户账户 → 凭据管理器 → Windows 凭据」,找到
git:https://github.com或类似条目,直接删除 - macOS 用户常用 Keychain,打开「钥匙串访问」,搜索
github.com或git,删掉对应 Internet password 条目 - Linux 用户可能用
git-credential-libsecret或git-credential-cache,可运行git config --global --unset credential.helper临时禁用,再试一次git push触发重新输入
VSCode 点 Git 提交按钮后弹窗没反应或反复报错
VSCode 默认会复用系统 Git 的凭据流程,但某些情况下弹窗被拦截、失焦或权限受限,导致输不了密码。
实操建议:
- 别在 VSCode 里硬等弹窗,直接切到终端,cd 到项目目录,手动跑一次
git push—— 这样能确保触发原生认证流程,多数情况会跳出系统级密码框 - 如果弹窗一闪而过,检查是否启用了 Wayland(Linux)或某些安全策略(如 macOS 的「完全磁盘访问」未给 Terminal 授权),会导致 GUI 弹窗失败
- VSCode 设置里搜
git.terminalAuthentication,确保它是true(默认就是),否则它会跳过终端交互,直接失败
git config --global credential.helper 输出结果看不懂
这个命令只告诉你当前用什么凭据助手,但不告诉你它有没有生效、存了啥、甚至可能输出空——不代表没配置,只是没设全局值。
实操建议:
- 运行
git config --global credential.helper,常见返回有:manager(Windows)、osxkeychain(macOS)、libsecret(GNOME)、cache(内存缓存,15分钟过期) - 如果输出为空,不代表没凭据,可能是用了系统默认值,或凭据存在但 helper 没显式配置;此时更该查实际存储位置(如上文的凭据管理器或钥匙串)
- 不要随便执行
git config --global credential.helper store,它会把密码明文写进~/.git-credentials,有安全风险,仅调试用
改完密码或启用 2FA 后,旧 token 失效但不知道哪里还在用
GitHub/GitLab 等平台启用双重验证(2FA)后,HTTP 密码登录被禁用,必须用 Personal Access Token(PAT)替代。很多用户以为“输密码就行”,其实早该换 token。
实操建议:
- GitHub 上去
Settings → Developer settings → Personal access tokens → Tokens (classic),生成新 token,勾选repo和workflow(按需) - GitLab 对应路径是
User Settings → Access Tokens,Scope 至少选api和read_repository - 生成后,别复制错——token 是一长串字母数字,没有空格;粘贴时注意别带前后换行或中文标点
- 如果之前用过 GitHub CLI(
gh auth login),也要重新登录,否则 VSCode 可能优先走 CLI 凭据而非 Git 自身凭据
Authentication failed 里。











