vscode git弹窗输密码失败是因为github等平台已停用明文密码认证,须用personal access token(pat)替代;需清理旧凭据、配置对应系统的凭据管理器或改用ssh协议。

VSCode 里每次 Git 操作都弹窗输密码,不是 VSCode 的设置问题,而是 Git 没配凭据管理器,或存了过期/错误的 Personal Access Token(PAT)——输账号密码根本不会成功,GitHub/Gitee/GitLab 全部在 2021–2023 年间停用了明文密码认证。
为什么输对密码还是报 authentication failed?
你看到的弹窗标题是“Username / Password”,但实际要填的是:Username = 你的平台用户名(不是邮箱),Password = Personal Access Token,不是网站登录密码。常见失败原因包括:
- Gitee 或 GitHub 上生成 PAT 时没勾选
repo(读私有库必需)和write_repository(git push必需) - 复制 PAT 时多空格、少字符,或粘贴进弹窗被自动截断(尤其 Windows 凭据管理器编辑框)
- Git 正在重试旧凭据——它不会主动弹新窗口,而是拿着缓存的失效 token 反复失败
- 用的是 HTTPS 地址(如
https://gitee.com/user/repo.git),天然依赖凭据管理;SSH 地址(如git@gitee.com:user/repo.git)则完全不走这套流程
Windows 用户:删旧凭据 + 配 manager-core
Windows 凭据管理器会卡住旧配置,光改 git config 没用。必须手动清理:
- 打开「控制面板 → 用户账户 → 凭据管理器 → Windows 凭据」
- 在「普通凭据」列表中,找到以
gitee.com、github.com或gitlab.com开头的条目 - 点击展开 → 「编辑」→ 清空「密码」字段,或直接「删除」整条
- 执行:
git config --global credential.helper manager-core - 在 VSCode 终端运行一次
git pull,弹窗出现后填对用户名和 PAT,之后就不再提示
macOS / Linux 用户:别碰 store,优先用系统钥匙串
git config --global credential.helper store 会把 token 明文写进 ~/.git-credentials,权限一错就失效,杀毒软件可能拦截,Gitee PAT 泄露等于仓库裸奔。
- macOS 执行:
git config --global credential.helper osxkeychain - Linux(GNOME 环境)建议装
libsecret后用:git config --global credential.helper libsecret - Linux(无图形环境)可用内存缓存:
git config --global credential.helper 'cache --timeout=3600'(1 小时) - 改完后同样要触发一次
git pull,让新 helper 抓取并存入钥匙串
终极方案:换 SSH 协议,彻底绕开密码弹窗
HTTPS + 凭据管理器始终有缓存失效、跨终端不同步、token 过期等问题;SSH 密钥认证只要配置一次,所有 Git 操作(包括 VSCode 内置操作面板)全免密。
- 检查是否有密钥:
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)粘到 Gitee/GitHub 的 SSH Keys 设置页 - 改远程地址:
git remote set-url origin git@gitee.com:user/repo.git
注意:git remote set-url 改的是本地仓库配置,不影响远端;改完立刻生效,无需重启 VSCode。











