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

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


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

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

下面是报错截图


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 配置中。之后的登录便可以使用公钥登录。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ** SSH(安全外壳协议) **为 Secure Shell 的缩写,由 IETF 的网络小组(Network ...
    linfree阅读 4,292评论 4 7
  • SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group...
    shuff1e阅读 5,757评论 1 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,107评论 19 139
  • 一个人 在这里自在哼唱 在这里自言低语 在这里自得其乐 一步步 行着走着 不经意间影子走在前面 拉长了黑夜 添了几...
    小道士5宝阅读 1,886评论 0 0
  • 关键词:美食单元剧|平淡种田风|人的欲望 这一期里看了几本书,但想了想没有值得写的,所以这一期作业是以前看了两三遍...
    谭文文阅读 5,138评论 0 0

友情链接更多精彩内容