为Github Gitlab Gitee账户分别设置SSH key

为Github Gitlab Gitee账户分别设置SSH KEY

一、分别生成一对秘钥ssh key

1
2
3
4
5
6
7
8
9
ssh-keygen -t rsa -C "github" -f ~/.ssh/github-rsa
ssh-keygen -t rsa -C "gitlab" -f ~/.ssh/gitlab-rsa
ssh-keygen -t rsa -C "gitee" -f ~/.ssh/gitee-rsa

配置远程仓库公钥(这里以github为例):
#个人头像 -> settings -> SSH and GPG keys -> New SSH key
## Title 标题 随便写一个
## Key type 类型 选择 Authentication Key
## Key     粘贴 github-rsa.pub 公钥内容

二、添加私钥到ssh-agent的高速缓存中,提高ssh的认证速度。

1
2
3
ssh-add ~/.ssh/github-rsa
ssh-add ~/.ssh/gitlab-rsa
ssh-add ~/.ssh/gitee-rsa

默认操作系统是不开启ssh-agent的,需要手动打开

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 开启ssh-agent
ssh-agent bash
# 查看私钥列表
ssh-add -l
# 查看公钥列表
ssh-add -L
# 清空所有密钥
ssh-add -D
#从ssh-agent中删除某个私钥或者某个公钥
ssh-add -d ~/.ssh/id_rsa
ssh-add -d ~/.ssh/id_rsa.pub

命令选项
-D 删除ssh-agent中的所有密钥
-d 从ssh-agent中删除某个密钥
-e pkcs11:删除PKCS#11共享库pkcs1提供的钥匙
-s pkcs11:添加PKCS#11共享库pkcs1提供的钥匙
-L 显示ssh-agent中的公钥
-l 显示ssh-agent中的私钥
-t life:对加载的密钥设置超时时间,超时ssh-agent将自动卸载密钥
-X 对ssh-agent进行解锁
-x 对ssh-agent进行加锁

三、在~/.ssh/下新建一个配置文件 config ,目录结构如下

1
2
3
4
5
/.ssh
-- config
-- github-rsa
-- github-rsa.pub
-- ...

配置不同仓库对应的ssh key, config 配置文件内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github-rsa
# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee-rsa

# Host和HostName填写git服务器的域名,IdentityFile指定私钥的路径

测试

1
2
3
4
5
6
# ssh -T git@[config文件中配置的host值]
ssh -T git@github.com
ssh -T git@gitlab.com
ssh -T git@gitee.com
# 返回如下内容,表示身份验证配置成功
Hi xxxx! You’ve successfully authenticated, but GitHub does not provide shell access.