mac下管理多个ssh秘钥对

一、日常废话

昨晚看到一篇提升博客访问速度的文章,其中一点是配置多线路解析,国内路线走国内平台,国外线路走 GitHub Pages。其中,作者提到了国内的代码托管平台 Coding,该平台免费提供静态资源托管,所以我们以前利用 hexo搭建的 GitHub Pages 博客也可以轻松迁移过来。具体步骤我写在另一篇博客中,这里不多讲了。

二、遇到的问题及解决办法

1.问题场景

公司项目托管在 GitLab,个人项目托管在 GitHub 和 Coding,用到三对 ssh 秘钥,

Coding 与 GitHub 一样,需要将使用者的公钥上传到服务器以保证安全传输。所以我用下面的命令生成了 Coding平台专用的秘钥对,至于它的原理,另找时间研究吧。

ssh-keygen -t rsa -C "username@email.com"

换mac后我先 clone 的公司的项目,当时生成的秘钥文件是 id_rsa,对应于 GitLab。这次为 Coding 生成的秘钥不能再用默认命名以免覆盖,另取名 coding_key。问题就出在这里,我把 coding_key.pub 中的公钥上传到Coding后,用以下命令测试还是 Permission denied。

ssh -T git@git.coding.net

2.问题的原因参考这里

每次连接远程A服务器时,本机的ssh客户端默认发送id_rsa(ssh-keygen生成秘钥对时的默认命名)私钥到A服务端进行验证,如果本机只有这一个秘钥对且生成时没有更改默认命名,那自然不会有问题。但如果本机还与B通信,就需要生成另一对秘钥,上传公钥到B。连接B服务器时,ssh客户端发送的仍然是id_rsa,而与B服务器存储的公钥对应不上,自然就报错了。

我想要的是,不同的ssh秘钥对共存且互不干扰,连接 Server 时自动选择对应私钥。

3.解决方案:

https://segmentfault.com/q/1010000000835302

https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/

https://my.oschina.net/stefanzhlg/blog/529403

4.我的做法:

上面提到的解决办法,都是先用ssh-add ~/.ssh/xxx将私钥添加到ssh-agent,然后再编写config文件。我实践了一下,发现在mac系统中,使用 ssh-add 添加和编写 config 文件这两步,只要有一步做到就可以满足需求。不知道window 下是不是必须同时实现才可以。

0%