Visual Studio Code中Git Push报错‘无匿名写入权限,认证失败’求助
别慌,新手遇到Git认证问题太正常了!结合你已经排查的点,我给你梳理几个更具体、易操作的排查方向,一步步来解决:
排查方向和解决步骤
1. 先确认本地Git的身份配置是否匹配你的GitHub账号
GitHub推送代码时,会先验证本地Git配置的用户名和邮箱是否和远程仓库的所有者一致。你可以这样检查:
- 打开VS Code里的终端,运行命令查看当前配置:
git config --list - 找到
user.name和user.email这两行,看看是不是你GitHub账号的用户名和注册邮箱。如果不对,立刻修改:git config --global user.name "你的GitHub用户名" git config --global user.email "你的GitHub注册邮箱"
2. 检查远程仓库的URL是否正确(别推错仓库了!)
报错里的「No anonymous write access」大概率是因为你试图推送到别人的公共仓库(你没有写权限),或者远程地址配置错了:
- 运行命令查看当前关联的远程仓库:
git remote -v - 确认输出里的
origin地址是你自己的GitHub仓库(比如https://github.com/你的用户名/你的仓库名.git或者git@github.com:你的用户名/你的仓库名.git)。如果是别人的仓库,你需要先在GitHub上fork这个仓库,然后克隆你自己fork后的版本,再推送代码。
3. 如果用HTTPS地址推送:必须用个人访问令牌(PAT)代替密码
GitHub早就停止支持用账号密码直接通过HTTPS推送代码了,现在必须用PAT作为「密码」来认证:
- 生成PAT:登录GitHub → 右上角头像 →
Settings→Developer settings→Personal access tokens→Tokens (classic)→Generate new token- 勾选
repo权限(这是推送代码必需的),设置合适的过期时间,然后一定要复制并保存好生成的PAT(刷新页面后就看不到了)
- 勾选
- 当VS Code弹出输入用户名/密码的窗口时:
- 用户名填你的GitHub账号名
- 密码填刚才生成的PAT
4. 如果用SSH地址推送:检查SSH密钥是否正确配置
如果你的远程URL是SSH格式(git@github.com:...),需要确保本地有SSH密钥,并且公钥已经添加到GitHub:
- 打开Git Bash(Windows用户)或终端,运行命令检查本地有没有SSH密钥:
看看有没有ls -al ~/.sshid_rsa(私钥)和id_rsa.pub(公钥)这两个文件 - 如果没有,生成新的SSH密钥:
一路按回车就行(不用设置密码,否则每次推送都要输入)ssh-keygen -t rsa -b 4096 -C "你的GitHub注册邮箱" - 复制公钥内容:
cat ~/.ssh/id_rsa.pub - 登录GitHub →
Settings→SSH and GPG keys→New SSH key,把复制的公钥粘贴进去,保存即可
5. 重置VS Code的Git认证缓存
有时候VS Code会缓存错误的认证信息,导致一直认证失败,试试这个:
- 关闭VS Code,打开任务管理器(Windows)结束所有
Code.exe进程 - 重新打开VS Code,再次尝试推送,看会不会弹出正确的认证窗口
内容的提问来源于stack exchange,提问作者user180146




