Github多帐号的SSH证书切换

作者: 5473 分类: Git 发布时间: 2015-09-17 16:13 阅读数:348

Github使用SSH与客户端连接,如果是单用户(terry@abc.com),生成密钥对后,将公钥保存至 GitHub ,每次连接时SSH客户端会发送本地私钥(默认~/.ssh/id_rsa)到服务端验证,连接的服务器上保存的公钥和发送的私钥自然是配对的。但是如果是多用户(terry@abc.com,grace@abc.com),我们在连接到grace的帐号时,grace保存的是自己的公钥,但是SSH客户端依然发送默认私钥,即terry的私钥,那么这个验证自然无法通过。不过,要实现多帐号下的SSH key切换只需在客户端做一些配置即可。

1.使用 ssh-keygen -C “grace@abc.com” 生成新的SSH key:id_rsa_grace,生成完后将新的SSH public key添加到github。

2.默认SSH只会读取id_rsa,所以为了让SSH识别新的私钥,需要将其添加到SSH agent

3.完成以上步骤后在~/.ssh目录创建config文件,该文件用于配置私钥对应的服务器。内容如下:

其规则就是:从上至下读取config的内容,在每个Host下寻找对应的私钥。

这里将GitHub SSH仓库地址中的git@github.com替换成新建的Host别名如:github-grace,那么原地址是:git@github.com:grace/Mywork.git,替换后应该是:github-grace:grace/Mywork.git.

 

4.测试:

5.应用

附:SSH公钥登陆过程
  1. 客户端发出公钥登陆的请求(ssh user@host)
  2. 服务端返回一段随机字符串
  3. 客户端用私钥Private Key(id_rsa)加密这个字符串,再发送回服务端
  4. 服务端用~/.ssh/authorized_keys里面存储的公钥Public Key去解密收到的字符串。如果成功,就表明这个客户端是可信的,客户端就可以成功登陆

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注