Bitbucket执行git pull报client_loop连接重置错误如何解决
Bitbucket双SSH账号拉取报错排查方案
高优先级排查:双账号SSH配置冲突(该场景下90%报错为此原因)
两个独立SSH密钥对应不同Bitbucket账号时,若未做Host别名隔离,SSH会自动优先匹配第一份加载的密钥,触发账号鉴权失败。Bitbucket不会直接返回权限错误,常会直接重置连接抛出断连、EOF类报错。
- 检查SSH配置文件,路径为
~/.ssh/config(Windows系统对应路径为C:\Users\当前用户名\.ssh\config),必须为两个账号配置独立的Host别名,禁止两个账号都直接使用默认的bitbucket.org作为Host,参考配置如下:
# 个人账号配置 Host bitbucket-personal HostName bitbucket.org User git IdentityFile ~/.ssh/你的个人账号私钥文件名 IdentitiesOnly yes # 工作账号配置 Host bitbucket-work HostName bitbucket.org User git IdentityFile ~/.ssh/你的工作账号私钥文件名 IdentitiesOnly yes
配置中IdentitiesOnly yes为必填项,避免SSH自动加载ssh-agent里缓存的其他密钥导致鉴权错乱。
- 核对当前报错仓库的远程地址,若仓库属于工作账号,远程地址不能使用默认格式
git@bitbucket.org:组织名/仓库名.git,必须替换为对应Host别名的格式,修改命令:git remote set-url origin git@bitbucket-work:组织名/仓库名.git - 执行连通性校验,分别运行以下命令验证密钥匹配结果:
ssh -T git@bitbucket-personalssh -T git@bitbucket-work
命令返回的登录用户名和当前仓库所属账号一致时,说明SSH配置正常;如果返回的是另一个账号的用户名,重新检查私钥路径、IdentitiesOnly配置是否正确。
次优先级排查:SSH连接稳定性问题
如果SSH配置校验通过仍报错,按以下步骤排查连接问题:
- 清除本地SSH缓存的Bitbucket主机记录:
ssh-keygen -R bitbucket.org - 在SSH配置的Bitbucket规则下添加保活参数,避免长连接被中间网络设备重置:
ServerAliveInterval 60 ServerAliveCountMax 10
- 临时关闭本地代理、VPN类网络工具重试,部分网络代理会截断SSH大流量传输,触发sideband packet读取失败报错。
通用Git配置问题排查
- 调大Git传输缓冲区,避免大仓库拉取时缓冲区溢出断连:
git config --global http.postBuffer 524288000 - 关闭Git传输压缩,部分场景下压缩算法兼容问题会导致索引包校验失败:
git config --global core.compression 0 - 先执行浅拉取验证连通性,拉取最新1层提交成功后再拉取全量历史:
git pull --depth=1 origin master
浅拉取成功后执行git fetch --unshallow即可同步全量提交记录。
内容的提问来源于stack exchange,提问作者Kevnlan
相关产品推荐
相关产品推荐

