外观
报错 The requested URL returned error: 403 解决方法
git 操作(clone/pull/push)或调 GitHub API 时报:
text
fatal: unable to access 'https://github.com/用户/仓库.git/':
The requested URL returned error: 403403 = Forbidden(被拒绝),不是网络不通,而是"服务器认为你没权限"。成因有几种,对症处理。
先分清哪种 403
| 场景 | 最可能原因 |
|---|---|
| push 私有仓库报 403 | 凭证无效 / 无写权限 |
| clone 私有仓库报 403 | 未认证 / token 无 repo 权限 |
| 调 GitHub API 报 403 | 触发 rate limit(限流) |
| 任何操作都 403 | 代理 / 网关拦截 |
方法一:凭证问题(最常见)
私有仓库需要有效凭证。GitHub 早已禁用密码认证,必须用 Personal Access Token(PAT):
- 生成 PAT(需勾选
repo权限),做法见 👉 密码认证被移除改用 token; - 更新本地保存的旧凭证(旧密码/过期 token 会一直 403):
bash
# 查看凭证助手
git config --global credential.helper
# Windows:凭据管理器里删除 github.com 条目后重试
# macOS:钥匙串访问里删除 github.com 密码后重试清掉旧凭证后再次操作,git 会提示重新输入,用户名填 GitHub 用户名、密码填 PAT。
方法二:确认你有该仓库的权限
- push 别人的仓库会 403——你需要是协作者,或先 fork 到自己账号再 push。
- 组织仓库可能开了 SSO,PAT 需要授权给该组织(在 token 设置页点 "Enable SSO")。
方法三:GitHub API 限流(403 rate limit)
调 API(或某些工具批量请求)时,未认证的匿名请求限额很低,超了就 403:
bash
# 未认证:60 次/小时;带 token:5000 次/小时
curl -H "Authorization: Bearer <你的PAT>" https://api.github.com/rate_limit给请求带上 token 即可大幅提升额度。
方法四:代理 / 网关拦截
公司网关或某些代理会对 GitHub 返回 403。可:
- 换用你自己的干净 代理;
- 或确认 git 没有误用一个会拦截的代理(检查
git config --global --get http.proxy)。
速查
| 报错场景 | 解决 |
|---|---|
| push/clone 私有库 403 | 更新 PAT 凭证(方法一) |
| 组织仓库 403 | 给 token 授权 SSO(方法二) |
| API 403 rate limit | 请求带 token(方法三) |
| 全都 403 | 查代理/网关(方法四) |
小结
- 403 是权限问题,不是网络断——先分清是凭证、权限还是限流。
- 私有仓库九成是旧凭证没更新,清掉重新用 PAT。
- API 403 基本是限流,带上 token 即可。
本文仅供技术学习与研究,请遵守所在国家/地区法律法规。