Git —— 关于创建多对非对称公钥时对不同服务器的匹配问题

Git —— 关于创建多对非对称密钥时对不同服务器的匹配问题

《工欲善其事,必先利其器》—— 既然点进来了,麻烦你看下去,希望你有不一样的收获~

banner

《 前言 》

大概是半年前,我写过一篇关于 git 连接托管平台提示 permission denied 的文章,大概是 —— 《Git ---- 解决coding:Permission denied(publickey)》,感兴趣的朋友可以去看看。

当时我在写文章时,考虑到 C 站这个平台的尿性,压根都没想去研究这其中的缘由。不过这件事也一直在我的心里堵着,本身我自己写作时就不喜欢写那些没头没尾的文章,搞得云里雾里的。因为即便帮助其他人解决了问题之后,如果也不能掌握这个知识点的话,那么我会宁愿不写。

那么今天我就来填这个坑 [托腮]。

一、为什么需要多对密钥?

由于工作的原因,团队要求使用码云作为代码托管平台。而我本人则是习惯使用 Coding 平台托管自己的学习代码,并且有时也会需要把部分自学的代码开源到 GitHub 上(虽然并没有什么价值 [托腮])。所以,为了便于管理和区分各个平台服务器的账户绑定的非对称密钥对,我采用了每个平台各自管理自己对应密钥的管理方式。

ssh密钥对截图

二、管理多对密钥所产生的问题

区分管理固然很清晰,但随之而来的问题就是,在同一台本地主机的情况下,除了 id_rsa 绑定的托管平台,其他平台,都会出现 permission denied 的情况。这是由于 git 在没有会默认选取 id_rsa 作为本机的非对称密钥对的私钥而导致的。

因此,当我们打开 ssh 交互面板时,如果此时我们想尝试连接其他托管平台的服务器(例如上面提及的 Coding、GitHub等),就会出现拒绝访问的情况。因为非对称密钥对,只有当公钥和私钥解密比较结果一致之后,才可以允许用户登陆本服务器。

三、如何解决密钥对匹配不一致的问题?

  • 临时会话时短暂指定选取的本机私钥

打开 SSH 会话时,选取私钥存入内存中,以上图为例,我们选取 Coding 私钥:

eval `ssh-agent`
ssh-add '~\.ssh\coding_rsa'

或者:

$(ssh-agent)
ssh-add '~\.ssh\coding_rsa'

显示的结果

这样,我们就能正确的匹配到想要沟通的服务器上。

四、讲讲 ssh-agent 和 ssh-add

可能现在你会好奇 ssh-agent 是做什么的?

其实很简单,私钥设置了密码以后,每次使用都必须输入密码,有时让人感觉非常麻烦。

ssh-agent 命令就是为了解决这个问题而设计的,它让用户在整个 Bash 对话(session)之中,只在第一次使用 SSH 命令时输入密码,然后将私钥保存在内存中,后面都不需要再输入私钥的密码了。

ssh-add 命令则是用来将私钥加入 ssh-agent,仅此而已。

参考文章:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值