git push 报 "Authentication Failed" 怎么解决

认证失败的排查顺序:GitHub 已禁用密码认证,必须用 PAT 或 SSH;检查凭据管理器里是否存了过期凭据并清除重试;确认账号对该仓库有写权限;双因素认证开启时密码必然无效。

最佳实践
Git 分支协作与合并示意

最常见的原因: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 授权、分支保护规则。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台