Skip to content

报错 Support for password authentication was removed 解决

git push / git pull 时报:

text
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/...
fatal: Authentication failed for 'https://github.com/用户/仓库.git/'

原因很简单:GitHub 早已停用账号密码认证,HTTPS 方式必须用 Personal Access Token(PAT) 代替密码,或改用 SSH。

方案一:创建并使用 PAT(HTTPS 方式)

1. 生成 Token

在 GitHub 网页:Settings → Developer settings → Personal access tokens。两种类型:

  • Fine-grained token(推荐):可精确到具体仓库和权限;
  • Classic token:勾选 repo 权限即可读写仓库。

生成后立即复制保存(页面只显示一次)。

2. 用 Token 代替密码

再次 push 时,git 会要用户名和密码:

  • Username:你的 GitHub 用户名
  • Password:粘贴 PAT(不是账号密码)
bash
git push
# Username: your-name
# Password: ghp_xxxxxxxxxxxxxxxx   ← 这里粘 PAT

3. 让 git 记住 Token(免每次输入)

bash
# 长期保存到凭证管理器
git config --global credential.helper store     # 明文存到 ~/.git-credentials
# 或用系统凭证管理器(更安全)
# Windows: manager   macOS: osxkeychain
git config --global credential.helper manager

方案二:改用 SSH(推荐,免 token)

SSH 方式一次配置后就不用再管 token:

bash
# 1. 生成密钥
ssh-keygen -t ed25519 -C "your_email@example.com"

# 2. 复制公钥,添加到 GitHub → Settings → SSH and GPG keys
cat ~/.ssh/id_ed25519.pub

# 3. 把仓库远程地址从 https 换成 ssh
git remote set-url origin git@github.com:用户/仓库.git

# 4. 测试
ssh -T git@github.com

SSH 连不上先看 SSH 443 端口Permission denied 排查

关键:更新已保存的旧密码

很多人生成了 token 还是报错,是因为系统里存着旧的账号密码,git 一直拿旧的去认证:

  • Windows:控制面板 → 凭据管理器 → Windows 凭据 → 删除 git:https://github.com 条目;
  • macOS:钥匙串访问 → 搜索 github.com → 删除对应密码;

删除后下次操作会重新提示输入,填入 PAT 即可。

速查

你想要用哪个
继续用 HTTPS方案一(PAT)
一劳永逸免输入方案二(SSH)
生成了 token 仍失败删除系统里的旧凭证

小结

  • 密码认证已停用,HTTPS 必须用 PAT 当密码。
  • 想省事直接转 SSH,以后不用管 token。
  • 生成 token 后仍报错 → 一定是旧凭证没删,去凭证管理器/钥匙串清掉。

本文仅供技术学习与研究,请遵守所在国家/地区法律法规。

本站为技术学习交流站点,与 GitHub, Inc. 无任何隶属或官方关系。所有内容仅供技术研究与学习,请遵守所在国家/地区的法律法规。