重新授权 Git Credential Manager OAuth 应用程序
问题描述
当您的组织启用了 GitHub SAML 单点登录(SSO)后,在使用 Git 命令操作组织仓库时可能会遇到以下错误:
bash
$ git push --delete origin v0.1.3
remote: The `<my_company>' organization has enabled or enforced SAML SSO. To access
remote: this repository, you must re-authorize the OAuth Application `Git Credential Manager`.
fatal: unable to access 'https://github.com/<my_company>/myproj.git/': The requested URL returned error: 403
这个错误表示您需要重新授权 Git Credential Manager 这个 OAuth 应用程序,以通过组织的 SAML SSO 认证。
解决方案
以下是针对不同操作系统和场景的解决方案,按推荐顺序排列。
方法一:使用 GitHub CLI 重新认证(推荐)
适用平台
Windows、macOS、Linux
安装 GitHub CLI(如果尚未安装):
bash
# macOS
brew install gh
# Windows
winget install --id GitHub.cli
# Ubuntu/Debian
sudo apt install gh
然后执行认证命令:
bash
gh auth login
按照提示完成认证流程,选择 HTTPS 协议并授权相关组织访问权限。
方法二:清除凭据并重新认证
Windows 系统
- 打开「控制面板」→「用户账户」→「凭据管理器」→「Windows 凭据」
- 在「通用凭据」中找到并删除所有以
git:
开头的 GitHub 相关凭据 - 在 Git Bash 中重新执行 Git 命令,系统会提示您重新认证
macOS 系统
- 打开「钥匙串访问」应用程序
- 搜索「github.com」并删除相关凭据
- 或者在终端中执行:
bash
$(git config --global credential.helper) github login
Linux 系统
bash
# 查看凭据存储文件
git credential-store --file ~/git.store
# 删除有问题的凭据后重试
方法三:使用 Git Credential Manager 命令
TIP
仅适用于已安装 Git Credential Manager 的 Windows 系统
bash
git credential-manager github login
方法四:使用 SSH 替代 HTTPS
如果上述方法都无效,可以考虑使用 SSH 协议替代 HTTPS:
bash
# 获取仓库的 SSH URL(格式:git@github.com:username/repo.git)
git remote set-url origin <ssh-url>
方法五:撤销并重新授权 OAuth 应用
如果特定 IDE(如 VSCode)出现此问题:
- 访问 GitHub 已授权的 OAuth 应用
- 找到相关应用(如 "GitHub for VSCode"、"Git Credential Manager")
- 点击「撤销」并重新在 IDE 中登录
预防措施
为了避免类似问题再次发生:
- 定期更新认证:定期运行
gh auth refresh
刷新认证令牌 - 使用 SSH 密钥:对于长期项目,考虑使用 SSH 协议而非 HTTPS
- 监控组织访问:定期检查 GitHub 设置中的应用授权状态
故障排除
如果仍然遇到问题:
WARNING
确保您已获得组织的适当访问权限,并且 SAML SSO 已正确配置。
- 确认您的 GitHub 账户已通过组织 SSO 认证
- 检查组织设置中是否已授权相关 OAuth 应用
- 尝试在不同的网络环境下操作(某些公司网络可能限制访问)
通过上述方法,您应该能够成功重新授权 Git Credential Manager 并恢复对组织仓库的正常访问。