同机SSH密钥认证正常 新克隆Bitbucket仓库可pull旧仓库要输密码
Bitbucket本地旧仓库执行git pull弹出密码输入的原因及修复
核心原因
该异常和全局SSH密钥配置无关,本质是出问题的旧本地仓库没有使用SSH协议和远程仓库通信。绝大多数情况是旧仓库配置的远程origin地址为HTTPS格式,HTTPS协议默认走账号密码认证逻辑,不会调用本地配置的SSH密钥,因此会持续弹出密码输入要求。
排查及修复步骤
- 第一步:进入出问题的旧仓库目录,执行命令查看当前绑定的远程仓库地址
正常可走SSH密钥认证的地址格式为git remote -vgit@bitbucket.org:xxx/xxx.git,如果返回的fetch/push地址是https://bitbucket.org/xxx/xxx.git格式,即可确认是远程地址配置错误。 - 第二步:执行命令将远程origin地址替换为之前可以正常clone的SSH格式地址
git remote set-url origin git@bitbucket.org:xxxx/xxxx.git - 第三步:重新执行
git pull验证,此时即可和新克隆的仓库一样走SSH密钥认证,不会弹出密码输入框。
小概率异常场景排查
如果执行git remote -v确认地址已经是正确的SSH格式,可依次排查以下问题:
- 检查旧仓库本地Git配置是否覆盖了全局SSH参数:查看仓库内
.git/config文件,确认没有配置错误的sshCommand路径(比如指向了不存在的私钥文件),也没有配置错误的URL重写规则把SSH地址强制转成了HTTPS地址。 - 检查
.git目录权限:如果旧仓库是之前用sudo权限克隆的,当前操作用户没有.git目录的读取权限,会导致Git无法正常加载SSH配置,误触发密码认证,可执行sudo chown -R $USER:$USER .git修复目录权限后重试。
内容的提问来源于stack exchange,提问作者dlofrodloh
相关产品推荐
相关产品推荐

