本人注册一个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-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/id_rsa_example; 示例:添加本文中的两个密钥:ssh-add ~/.ssh/id_rsa_me; ssh-add ~/.ssh/id_rsa_galaxysoft;
进入~/.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!账户信息。