github等平台自2021年8月起禁用密码认证,git push报错“remote: password authentication is not supported”是因为必须改用personal access token(pat)或fine-grained token替代密码。

GitHub、GitLab 等平台已全面禁用密码方式推送代码,git push 时直接输账号密码会失败,必须改用 Personal Access Token(PAT)或 Fine-grained Token。
为什么 git push 报错 “remote: Password authentication is not supported”
这是 GitHub 自 2021 年 8 月起强制执行的策略;GitLab 也已在 2023 年后默认关闭密码认证。错误本质不是网络或权限问题,而是认证方式不被接受。
- 常见报错完整信息:
remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. - 即使你本地
git config --global user.name和user.email配置正确,也不影响该错误 - SSH 方式不受影响,但如果你用的是 HTTPS 协议的远程地址(如
https://github.com/user/repo.git),就必须换 Token
如何生成并配置 GitHub 的 Fine-grained Token
Fine-grained Token 比 Classic Token 权限更细、安全性更高,GitHub 新账户默认只提供此类型。
- 进入
Settings → Developer settings → Personal access tokens → Tokens (fine-grained) - 点击
Generate token → Generate new token (fine-grained) - 填写 Note(如
vscode-git-2024),设置 Expiration(建议选 30 天以内用于测试) - 在
Resource owner permissions中至少勾选:Repository permissions → Contents → Access: Read and write - 生成后立即复制保存——页面刷新后无法再次查看明文
怎样把 Token 填进 Git 的 HTTPS 地址里
不能把 Token 当密码输在交互式提示框里(Git 不再支持),必须嵌入远程 URL 或用凭据管理器缓存。
- 最简单可靠的方式:重写远程地址,把 Token 放在用户名位置:
git remote set-url origin https://<token>@github.com/username/repo.git</token> - 注意:Token 替代的是“用户名”,不是密码;URL 中不出现
:password这种结构 - 验证是否生效:
git ls-remote origin HEAD应返回 commit hash,无报错即成功 - 如果用 VS Code 内置终端操作,需重启终端才能读取新 remote 设置
GitLab 怎么配 Personal Access Token
GitLab 的 Token 配置逻辑类似,但路径和权限项名称不同,容易填错。
- 生成路径:
User Settings → Access Tokens,Name 填用途,Expires 填期限,Scopes 至少勾选read_repository和write_repository - GitLab 的 HTTPS URL 格式与 GitHub 一致,同样用
https://<token>@gitlab.com/namespace/repo.git</token> - GitLab 旧版实例(v15.0 之前)可能仍接受 Classic Token,但新版已要求 scope 显式声明,漏掉
api可能导致git clone失败 - 若遇到
HTTP Basic: Access denied,大概率是 Token 没勾选对应仓库权限,或 URL 中 Token 被 URL 编码破坏(避免手动拼接含斜杠 / 的 Token)
Token 是临时凭证,不是永久密钥;每次生成后要立刻存到安全地方,别硬编码进脚本或提交到仓库。HTTPS URL 里带 Token 的写法虽然方便,但一旦泄露风险极高——真正在 CI/CD 或共享环境中,应该用 git credential.helper 或环境变量注入方式替代明文 URL。











