首页 > 技术文章 > 同一个电脑使用多份密钥文件绑定多个帐号

fengzhilaoling 2021-05-23 09:37 原文

解决同一台电脑生成两份或多份ssh密钥、公钥映射两个或多个GitHub账号

需求描述
本人注册一个GitHub账户,用来分享本人自己的开源项目或者代码,同时,公司注册了一个GitHub账户,用来分享公司的开源项目。如果按照单个ssh公钥生成的方法则会把之前的公钥覆盖掉,这样将导致其中一方在下一次上传代码,本机和GitHub无法映射成功。

需求分析
解决这个问题首先要明确如何生成单个ssh公钥。
ssh生成单个公钥命令:ssh-keygen -t rsa -b 4096 -C "your_email@example.com"。如何生成ssh公钥
上述命令会在当前~/.ssh目录下生成id_rsa和id_rsa.pub两个文件。其中id_rsa是私钥文件,id_rsa_.pub是公钥文件。
id_rsa和id_rsa_.pub文件都是通过一个邮箱号生成的,同一个公钥文件不可以配置两个不同GitHub账户(已测试)。
那么两个GitHub账户就需要两个不同的邮箱号,来生成两组不同的公钥文件。

解决方案
分别指定ssh公钥文件的名称即可。
命令:ssh-keygen -t rsa -C "your_email@example.com" -f ~/.ssh/id_rsa_example
示例:分别以791815567@qq.com和galaxysoft@sina.cn两个邮箱在~/.ssh目录下生成两级不同的公钥文件。
791815567@qq.com邮箱:ssh-keygen -t rsa -C "791815567@qq.com" -f ~/.ssh/id_rsa_me
galaxysoft@sina.cn邮箱:ssh-keygen -t rsa -C "galaxysoft@sina.cn" -f ~/.ssh/id_rsa_galaxysoft
生成过程可参考如何生成单个ssh公钥 这篇文章。
执行完成后,会以~/.ssh目录下看791815567@qq.com邮箱对应的私钥文件id_rsa_me、公钥文件id_rsa_me.pub和galaxysoft@sina.cn邮箱对应的私钥文件id_rsa_galaxysoft、公钥文件id_rsa_galaxysoft.pub
分别在两个GitHub账户中添加对应的公钥信息即可,可参考如何生成单个ssh公钥 这篇文章

通过ssh-add添加密钥至ssh-agent中
命令:ssh-add ~/.ssh/id_rsa_example;
示例:添加本文中的两个密钥:ssh-add ~/.ssh/id_rsa_me; ssh-add ~/.ssh/id_rsa_galaxysoft;

添加config配置文件分别映射不同的GitHub账户
进入~/.ssh目录,新建config文件,并添加相应的内容:

# 个人的GitHub公钥
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_me  # 指定特定的ssh私钥文件

# BitMan's GitHub
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_galaxysoft  # 指定特定的ssh私钥文件

测试配置是否成功
测试命令:ssh -T git@github.com
如果出现如下信息,表示配置成功:

`Hi myNameIssls!` You've successfully authenticated, but GitHub does not provide shell access.

小提示:由于配置了两个GitHub的公、私钥映射信息,测试结果并不会把两个GitHub的信息都显示出来,只会显示第一个配置的映射成功信息。例如本例中只显示了Hi myNameIssls!账户信息。
原文链接:https://blog.csdn.net/myNameIssls/article/details/80516577

推荐阅读