fatal disk error.retry?怎么解决_解决 Could not read from remote repository 问题

最近我在运行 Jenkins Job 时候突然发现 git clone 代码的时候突然报了这个错误:

$ git clone ssh://git@git.companyname.com:7999/mvcc/opensrc.gitCloning into 'opensrc'...fatal: Could not read from remote repository.Please make sure you have the correct access rightsand the repository exists.

这个错误只在几年前刚开始使用 git 的时候遇到过,那时候我还不知道如何使用 ssh 的方式来 clone 代码。怎么会出现这个错误呢?我也没改过什么,非常不理解。

85d6892b390e40bf3bf603957b3b773e.png

Could not read from remote repository

最常见解决办法

Google 了没有找到我遇到的这个问题,绝大多数都是应为没有生成 ssh-key,然后将 pub key 添加到 Github 或是其他 Web git 管理平台,对于这个问题是这样解决的,以 GitHub 为例

首先,生成 SSH key

# 记得替换成你自己的邮箱账号ssh-keygen -t rsa -C xianpeng.shen@gmail.com

其次,拷贝 SSH pub key 到你使用的 git web 平台,比如 Github 等等。

cd %userprofile%/.ssh# 打开 id_rsa.pub 并拷贝内容notepad id_rsa.pub

最后,打开 https://github.com/settings/ssh/new 把你复制的内容贴进去保存即可。如果上面的办法还是不能解决你的问题,请继续往下看,也许是跟我遇到了同样的问题。

通过 SSH 命令测试排查

f97a6366b98b81fa49f026f3f365ce48.png

SSH 命令排查

对于我遇到的问题,上面的这种解决方式是无效的,因为同样的账号在别的虚拟机上并不存在这个问题,因此我在这个 HP-UX 虚拟机上用了另外一个账号生成 ssh-key, git clone 代码没有问题,那我知道了就是这两个账号的之间存在差异。

首先,我查看了这两个账号的 .gitconfig 文件,确实有差异,当我将好用的账号的 .gitconfig 内容复制到不好用的账号的 .gitconfig 文件时,并不好用。

其次,我发现执行 git clone 的时候在当前目录下生成了一个 core 文件,说明已经 core dump 了,但是这个 core 直接打开大部分都是乱码,错误信息很难准确定位。最后,我发现有一个命令是可以用来测试 SSH 连接的。

对于 Github 是这个命令

ssh -T git@github.com

我当前使用和出问题的是 Bitbucket,它的 SSH 连接测试命令是:

ssh -vvv git@bitbucket.org

我先用好 git clone 好用的账号,测试结果如下,这里我省略一些其他返回信息。

$ ssh -vvv git@bitbucket.orgOpenSSH_6.2p1+sftpfilecontrol-v1.3-hpn13v12, OpenSSL 0.9.8y 5 Feb 2013 # OpenSSH 版本不同HP-UX Secure Shell-A.06.20.006, HP-UX Secure Shell version # 原来是调用路径不同debug1: Reading configuration data /opt/ssh/etc/ssh_configdebug3: RNG is ready, skipping seedingdebug2: ssh_connect: needpriv 0debug1: Connecting to bitbucket.org [18.205.93.1] port 22.debug1: Connection established.... ...debug2: we did not send a packet, disable methoddebug1: No more authentication methods to try.Permission denied (publickey).

我再用 git clone 不好用的账号进行测试,结果返回如下:

$ ssh -vvv git@bitbucket.orgOpenSSH_8.0p1, OpenSSL 1.0.2s 28 May 2019 # OpenSSH 版本不同debug1: Reading configuration data /usr/local/etc/ssh_config # 原来是调用路径不同debug2: resolving "bitbucket.org" port 22debug2: ssh_connect_directdebug1: Connecting to bitbucket.org [180.205.93.10] port 22.debug1: Connection established.Memory fault(coredump)

明显看到他们使用了不同版本的 OpenSSH,说明他们的环境变量有所不同,并且他们还调用的不同路径下的 ssh_config。我之前查看过环境变量,但由于变量很多,不能一下判断那个变量可能会有影响。

最终解决办法

d4a761f442c226bf58a602931d969af5.png

解决办法

回到 git clone 失败的那个账号下面的 .profile 文件查看,这里确实添加了一个 /usr/bin 的环境变量,导致这个账号在执行 git clone 时候用了另外版本的 OpenSSH,我用的是 HP-UX,它对于包之前的依赖以及版本要求都非常高,把这个环境变量去掉之后,保存,重新登录到虚拟机,执行 git clone 恢复正常了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值