git push 报 "Authentication Failed" 怎么解决
认证失败的排查顺序:GitHub 已禁用密码认证,必须用 PAT 或 SSH;检查凭据管理器里是否存了过期凭据并清除重试;确认账号对该仓库有写权限;双因素认证开启时密码必然无效。
最常见的原因:GitHub 自 2021 年起不再接受账号密码做 Git 操作认证,必须用个人访问令牌(PAT)或 SSH 密钥。 如果你还在用密码,失败是必然。排查按这个顺序:① 密码 → 换 PAT;② 清掉凭据缓存里的过期条目;③ 确认有仓库写权限。
排查步骤
1. 确认认证方式
git remote -v
https://github.com/...→ 密码栏填 PAT,不是登录密码;git@github.com:...→ 走 SSH,检查密钥:ssh -T git@github.com。
2. 生成/更新 PAT
GitHub → Settings → Developer settings → Personal access tokens → 生成(勾 repo 权限)→ 复制。下次 push 时用户名照常、密码处粘贴 PAT。
3. 清除过期凭据
# Windows:凭据管理器 → Windows 凭据 → 删除 git:https://github.com
# macOS:钥匙串访问 → 搜 github.com → 删除
# 或命令行
git credential-manager erase # 输入 protocol=https / host=github.com
printf "protocol=https\nhost=github.com\n" | git credential reject
4. 检查权限与 SSO
- 别人的仓库/组织仓库:确认你是 collaborator 或组织成员且有写权限;
- 组织开了 SAML SSO:PAT 需要点 "Configure SSO" 授权给该组织,否则照样 403。
常见问题(FAQ)
Q:开了两步验证(2FA)后还能用密码吗?
不能,开不开 2FA 密码都无效。PAT 或 SSH 是唯二选择。
Q:SSH 也报 Permission denied (publickey)?
那是 SSH 认证问题:ssh -T git@github.com 测试;确认 ~/.ssh/id_ed25519.pub 已添加到 GitHub,ssh-agent 已加载私钥(ssh-add)。
Q:fatal: Authentication failed 和 403 有什么区别?
Authentication failed(401)是"你是谁"没通过——凭据问题;403 是"你没权限"——检查协作者身份、SSO 授权、分支保护规则。