记一次关于git 代码拉取失败的问题

最近需要拉取公司别的团队的代码,但是拉取报错,最后解决后,就想记录一下这整个过程,同时也整理一些相关的东西当做一次mark。(大牛请绕过)


  1. 起初以为只是自己权限的问题,但是申请到权限后仍然报错。
    第一步需要确认自己的权限(公司使用了gerrit 管理)
  2. 第二点就是我这次想mark的一个知识点,开始之前先来了解下SSH的工作原理,网上有很多,大家可以自己筛选一些读一些大牛整理好的这方面总结。

关于ssh的介绍这里随手贴一个
[SSH的原理][http://www.jianshu.com/p/6013327210f4]

下面是报错截图


记一次关于git 代码拉取失败的问题_第1张图片
image.png

我所碰到的问题主要是因为之前服务器IP更改过一次,当我要拉取一份新的代码时候新的主机公钥指纹由于没有存在于我的known_hosts 文件中,所以拉取失败。

为什么IP更改之后没有影响到其它已经在使用的并且是来自同一个server的代码呢?

因为只在第一次创建仓库链接的时候选择口令登录,之后使用的都是公钥登录。Client的公钥已经成功保存在server端(用来解密每次Client私钥加密的字符串),所以之前已经拉取的代码并没有收到影响。

知道了问题,那就是解决:删除known_hosts 里存储的原来的公钥指纹。从新创建连接使用口令登录。

你会看到下面的代码:

The authenticity of host 'ssh-server.example.com (12.18.429.21)' can't be established.
RSA key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.
Are you sure you want to continue connecting (yes/no)?

无法确认host主机的真实性,只知道它的公钥指纹,问你还想继续连接吗?

更安全的做法是校对server公布的公钥指纹(MD5加密公钥,方便校对).
校对并允许(yes)之后系统会出现一句提示,表示host主机已经得到认可。
Warning: Permanently added 'host,12.18.429.21' (RSA) to the list of known hosts.

然后输入密码登录

当远程主机的公钥被接受以后,它就会被保存在文件$~/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。
每个SSH用户都有自己的known_hosts文件,此外系统也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保存一些对所有用户都可信赖的远程主机的公钥。

使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。需要我们把公钥上传到服务端。
github或者gitlab gerrit等平台的setting - ssh key 配置中。之后的登录便可以使用公钥登录。

你可能感兴趣的:(记一次关于git 代码拉取失败的问题)