一、 问题
1、工作中常常需要在一台电脑上使用多个代码托管平台,此时需要将针对不同平台生成的多个ssh
私匙进行配置,否则会出现后面新生成的SSH
私匙无法被使用,或覆盖之前生成的私匙等问题。
2、在此以Windows
操作平台,及 github
和 gitee
代码托管平台为例进行测试。
二、 方案
按照GitBash的安装、配置的方式来分别生成github
和gitee
平台对应的公匙和私匙。主要流程如下所示:
1、首先设置姓名,邮箱,以分辨后期是谁提交改动代码
git config --global user.name "Firstname Lastname"
git config --global user.email "your_email@example.com"
2、执行生成对应平台公匙和私匙SSH Key
的命令,如下:
ssh-keygen -t rsa -C "your_email@example.com"
- 执行该命令后会提示如下的内容 ,此时要注意选择生成的目录位置及文件名,一般默认的地址及文件为:
/Users/your_user_directory/.ssh/id_rsa
,若不修改则第二次生成的公匙和私匙就会覆盖第一次生成的内容,导致第一次的公私和私匙无法使用。 - 在此将
GitBash
第二次生成Gitee
平台的私匙和公匙修改成指定目录的内容(第一次生成的github
保持默认),如下图所示,将其指定到自己新创建的目录GiteeKey
中,这样能保证第二次生成的不会覆盖掉之前的。(红线部分为自己输入的路径及文件名)
3、再将生成的各自平台上的公匙(id_rsa.pub
),添加到对应平台上的SSH Key
的位置保存。
4、由于主机上有两个私匙,默认的情况下远端找不到对应的私匙与其公匙进行匹配,因此需要添加对应的配置文件来进行说明,如下所示:
Host
:为代码托管平台主机,在此为github.comHostName
:代码托管平台主机名,在此为github.comIdentityFile
:与远端仓库的公匙进行配对的私匙的地址,该项最为重要,对应私匙的位置必须要正确。PreferredAuthentications
:优先认证方式,在此为ssh
的公匙。
# 配置GitHub.com
Host github.com
HostName github.com
IdentityFile C:\\Users\\Xu_asus\\.ssh\\id_rsa
PreferredAuthentications publickey
# 配置gitee.com
Host gitee.com
HostName gitee.com
IdentityFile C:\\Users\\Xu_asus\\.ssh\\GiteeKey\\id_rsa
PreferredAuthentications publickey
5、最后通过命令行来验证各自的结果
# github 平台验证方式
ssh -T git@github.com
# gitee平台验证方式
ssh -T git@gitee.com
显示下面的结果表示设置成功