VSCode克隆私有仓库报“Authentication failed”或“403 Forbidden”,根本原因是凭据层失效:GitHub/GitLab已停用密码认证,而VSCode图形界面仍沿用凭据管理器中缓存的过期Token或旧密码,导致反复认证失败;需清理系统凭据、配置有效Personal Access Token或切换SSH协议,并确保远程URL与认证方式匹配。

VSCode 克隆私有仓库报 “Authentication failed” 或 “403 Forbidden”,基本就是凭据层卡在旧 Token、错配协议或证书路径失效上,不是网络问题,也不是 VSCode 本身故障。
为什么 HTTPS 克隆总提示未授权
GitHub/GitLab 已全面停用账号密码直连 Git(2021 年起),但 VSCode 图形界面仍会沿用系统凭据管理器里缓存的旧密码或过期 Token。它不会主动提醒你“密码已作废”,而是反复拿错 credential 去认证,最终返回模糊的 Authentication failed 或 403 Forbidden。
- 错误现象:点
Git: Clone后弹窗输账号密码 → 输完立刻失败;终端里git clone https://github.com/user/private.git同样失败 - 根本不在 VSCode 设置里修,而在操作系统凭据存储中删条目
- Windows 用户重点查「凭据管理器 → 普通凭据」里是否有
git:https://github.com这类完整域名条目,直接删,别点编辑 - macOS 用户去「钥匙串访问」搜
github.com或gitlab.com,删掉状态异常(如“已过期”)的条目 - 删完必须补一步:
git credential reject,然后按提示输入:
protocol=https host=github.com
回车确认清空 Git 自身内存缓存。
如何生成并正确使用 Personal Access Token
Token 是现在 HTTPS 协议下唯一有效的“密码”,但填错位置或权限不足一样失败。
- GitHub:进
Settings → Developer settings → Personal access tokens → Tokens (classic) → Generate new token,至少勾选repo(私有库必需)和workflow(若用 CI) - GitLab:进
User Settings → Access Tokens,权限至少选api和read_repository - 生成后只显示一次,务必复制保存;之后所有 Git 操作中,“密码”栏粘贴的就是这个 Token,不是账户密码
- VSCode 弹窗里用户名填你的 GitHub ID(如
octocat),密码栏粘贴 Token —— 输错一个字符都会 403 - 别把 Token 写进脚本或提交到仓库;用完及时在平台页面
Revoke
HTTPS 还是 SSH?选错协议会导致凭据白配
混用协议是高频翻车点:你配好了 SSH 密钥,但远程 URL 还是 HTTPS 地址,VSCode 就根本不会走密钥认证,还是去找凭据管理器要密码。
- 先查当前远程地址:
git remote -v,确认是https://...还是git@github.com:... - 如果想切 SSH:
git remote set-url origin git@github.com:user/repo.git - SSH 前确保本地有可用密钥:
ls -al ~/.ssh/id_*.pub;没有就运行ssh-keygen -t ed25519 -C "your_email@example.com" - 密钥加进 agent:
eval "$(ssh-agent -s)" && ssh-add ~/.ssh/id_ed25519 - 公钥内容(
cat ~/.ssh/id_ed25519.pub)完整复制,粘到 GitHub/GitLab 的SSH Keys设置页 - 公司内网 Git 若禁了 22 端口,则只能退回 HTTPS + Token 方案
VSCode 图形界面克隆失败,但终端能行?环境不一致是主因
VSCode GUI 命令不读 shell 环境变量(比如 HTTP_PROXY 或 SSL_CERT_FILE),只认 Git 全局配置和系统凭据管理器。终端能行,GUI 不行,大概率是这两处没对齐。
- 检查代理是否统一:
git config --global --get http.proxy,和终端里echo $HTTP_PROXY对比;不一致就手动设:git config --global http.proxy http://127.0.0.1:7890 - HTTPS 克隆报
SSL certificate problem: unable to get local issuer certificate?说明 VSCode 找不到 ca-bundle.crt - 查 Git 自带证书路径:
git config --list | grep sslca,常见路径如C:\Program Files\Git\mingw64\etc\ssl\certs\ca-bundle.crt - 修复命令(Windows PowerShell/CMD 必须加双引号):
git config --global http.sslCAInfo "C:\Program Files\Git\mingw64\etc\ssl\certs\ca-bundle.crt" - 临时调试可关 SSL 验证:
git config --global http.sslVerify false,但别长期开着
最常被忽略的是:删完凭据后,VSCode 不会自动重试认证——得手动触发一次 Git: Clone 或 git push,它才会弹新窗口要你输 Token。


















