使用Atlassian SourceTree向Bitbucket执行git push时提示Unauthorized错误
故障日志
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks push -v origin master:master warning: encountered old-style '//wsl$/Ubuntu-20.04/home/workspace/projects/laravel-project' that should be '%(prefix)///wsl$/Ubuntu-20.04/home/workspace/projects/laravel-project' Pushing to bitbucket.org:cerberuspup/laravel-project.git Unauthorized fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. Completed with errors, see above.
日志开头的WSL旧格式路径警告是Git对WSL网络路径的格式识别提示,不会造成权限校验失败,核心故障是Bitbucket端身份认证未通过,按以下优先级排查即可:
- 校验远程仓库地址与协议匹配度
打开SourceTree顶部「仓库」-「仓库设置」,查看origin远程项的地址:- HTTPS协议地址格式为
https://bitbucket.org/cerberuspup/laravel-project.git - SSH协议地址格式为
git@bitbucket.org:cerberuspup/laravel-project.git
日志中显示的推送地址为SSH格式,先确认本地配置的鉴权方式和地址协议对应,避免出现配置了SSH密钥却使用HTTPS地址、保存了HTTPS凭据却使用SSH地址的不匹配问题。
- HTTPS协议地址格式为
- HTTPS协议场景修复
若使用HTTPS地址推送:- 打开Windows系统搜索「凭据管理器」,选择「Windows凭据」分类,找到所有已保存的bitbucket.org相关凭据条目,全部删除
- 回到SourceTree重新触发push操作,弹出身份验证窗口时注意:Bitbucket已不支持直接使用账号登录密码推送,需要输入Bitbucket个人设置中生成的App专用密码,生成密码时务必勾选仓库读写、推送相关权限
- 勾选记住凭据后重新推送即可
- SSH协议场景修复
若使用SSH地址推送:- 确认本地生成的SSH公钥已完整添加到Bitbucket账号的SSH密钥设置页,复制公钥时不要遗漏首尾字符、不要额外带入空格或换行
- 打开SourceTree顶部「工具」-「选项」-「SSH客户端」配置页,确认当前选中的SSH客户端加载的私钥,和上传到Bitbucket的公钥是配对的,不要混用其他环境生成的密钥
- 可先打开Git Bash执行
ssh -T git@bitbucket.org测试SSH连通性,返回认证成功提示后再回到SourceTree重试推送
- WSL跨文件系统访问异常修复(前三步无效时处理)
当前环境为Windows下访问WSL内的仓库目录,跨文件系统访问偶尔会导致SourceTree读取Git配置、凭据异常:- 直接打开WSL的Ubuntu终端,切换到项目目录执行
git remote -v,确认远程地址配置和SourceTree中显示的一致 - 在WSL终端内直接执行
git push origin master测试推送,如果WSL内可以正常推送,说明是Windows下WSL路径识别问题,可将WSL的项目路径映射为Windows网络驱动器,再在SourceTree中重新添加映射后的仓库即可解决。
- 直接打开WSL的Ubuntu终端,切换到项目目录执行
内容的提问来源于stack exchange,提问作者cerberusphp
相关产品推荐
相关产品推荐

