外观
报错 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 ← 这里粘 PAT3. 让 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.comSSH 连不上先看 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 后仍报错 → 一定是旧凭证没删,去凭证管理器/钥匙串清掉。
本文仅供技术学习与研究,请遵守所在国家/地区法律法规。