需求背景:
一般情况下,我们只会生成一个SSH Key,名字叫id_rsa,然后提交到多个不同的网站(如:GitHub、DevCloud、Gitee、GitLab)。
eg:尝试给Github配一个ssh。首先需要做的就是在命令行中输入以下指令
$ ssh-keygen -t rsa -C "youremail@email.com"
然后一路回车,最后生成复制id_rsa.pub到对应的Git服务器即可。
但是也存在另一种需要,我们在同一个网站上,注册了两个或者多个用户名,通常网站不会允许我们为这两个用户名,配置同一个SSH Key,这时候就会有些麻烦。
a. 一个gitee,用于A项目的一些开发活动;
b. 一个github,用于B项目的一些开发活动;
c. 一个gitlab,用于C项目的一些开发活动;
解决办法:
针对不同的账户,生成一个不同用途的SSH-Key,然后进行相关的配置即可。
下面以mac 设备为例:
1.生成对应的SSH-Key:
生成一个gitee用的SSH-Key
$ ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/gitee_id_rsa
生成一个github用的SSH-Key
$ ssh-keygen -t rsa -C 'xxxxx@gmail.com' -f ~/.ssh/github_id_rsa
生成一个gitlab用的SSH-Key
$ ssh-keygen -t rsa -C 'xxxxx@163.com' -f ~/.ssh/gitlab_id_rsa
2.在 ~/.ssh 目录下新建一个config文件(终端:touch config),添加如下内容(其中Host和HostName填写git服务器的域名,IdentityFile指定私钥的路径)
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/ gitlab_id_rsa
3.然后进入 ~/.ssh ,拷贝不同的xxx_id_rsa.pub到不同的服务器进行配置,eg:拷贝github_id_rsa.pub
内容,然后,进入Github,在Your profile里,点击左边SSH keys,再在右边点击Add SSH key按钮,如图:
其中,Title随便填,将id_rsa.pub里的内容复制到Key中,点击下方的Add key按钮。
4.用ssh命令分别测试
$ ssh -T git@gitee.com
$ ssh -T git@github.com
$ ssh -T git@gitlab.com
这里以gitee为例,成功的话会返回下图内容: