云服务器上拉取github代码报错 Permission denied (publickey)解决方案(亲测!100%解决!!!)

首先说一下网上的各种解决方案,如下:

第一种: 说让在本地生成新的公钥,然后复制到github上的设置里的 SSH keys里保存即可。

解释: 首先,这个说法没错,但是网上说的都是本地电脑用ssh方法拉不下来代码,用这个办法,并不是我们所说的问题。实际上我们本地不管用ssh方式还是https方式拉取代码,都可以成功拉取的。(前提是本地已经有生成的公钥私钥,并已经将本地的公钥配置到了github上)。我们这里是服务器上拉不下来代码。

第二种: 使用命令 vim /etc/ssh/ssh_config ,找到#StrictHostKeyChecking ask去掉注释,并把ask改为no即可。即修改配置StrictHostKeyChecking yesStrictHostKeyChecking no

解释: 这个意思是每次主机公钥确认,就是每次都要询问,看连接与key是否匹配。如果按这种方式改成 StrictHostKeyChecking no,是一种最不安全的方式,所以不建议这种。

有时候报错类似于 Permanently added ‘github.com,13.229.188.59’ (RSA) to the list of known hosts 这样的错误。意思是这个新的主机没有在 hosts 文件列表里存在,一般第一次报错后会自己添加到hosts列表里去,但后续继续拉取代码就会报错 Permission denied (publickey)。此时,有人纳闷了,不是已经hosts里有了吗,为什么还报错 Permission denied (publickey)。网上可能你会搜到比如让你删除 hosts 文件,重新生成 rsa 等等方法,其实没必要。这里就给大家说一下一个重要的知识点,说完大家也就明白了,不然在网上搜一大堆全是没用信息,浪费时间。

这里给大家讲一下密钥的作用,通俗简单的讲一下,使大家更容易明白些。我们平时可能经常在本地从github拉取代码,使用ssh拉取都没有问题,主要就是因为你本地电脑已经存在了之前你生成的公钥,一般在 ~/.ssh/ 目录下,有三个文件: id_rsa(私钥),id_rsa.pub(公钥),known_hosts(主机ip等信息记录)。而且你的github上已经配置了本地的这个公钥,所以,每次拉取代码都会成功。其实最主要的就是这个公钥来辨别身份

那么服务器上拉取代码也使用公钥,原理都相同。首先进入到服务器 cd ~/.ssh/目录下,此时看你这目录下面都有什么文件,如果你以前配置过免密登录,那么首先会有一个 authorized_keys 文件,这里面其实就是复制保存的你本地的 id_rsa.pub(公钥)内容,因为这个,你可以实现免密登录。如果没有authorized_keys 文件,也不影响啥,那个也只是与你设置免密登陆相关的,与这个报错没关系。下面再看还有没有 id_rsa,id_rsa.pub,known_hosts 这三个文件,如果没有,则新生成一个,和你本地生成新的密钥方式一样,具体生成命令百度很多,自行查看。如果有了,那现在就将 id_rsa.pub 里面的内容复制,然后登录github,在配置公钥那里新增一条,把刚才复制的内容粘贴进去并保存。此时,按理来说,你的github SSH Keys配置那里会有两条公钥配置。一个是你本地连接github进行匹配的公钥;另一个就是你服务器连接github匹配的公钥。此时,已经完成。只需要你重新登录服务器测试,你会发现已经可以使用ssh成功地从github上拉取代码到服务器上了。

原理: 你连服务器的时候,是自己的电脑生成了公钥,配置到了服务器上。而你从服务器上拉取代码,则是服务器自己生成的公钥,配置到了github的仓库服务器上。是两个作用于不同位置的,即本地电脑和服务器各自生成了一遍

总结: 这个错误的原因还是因为 github 上缺少你服务器生成的公钥,所以每次拉取代码主机公钥确认就会失败。添加即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值