github/gitlab同时添加多个ssh key

当我们有 github 和 gitlab 两个账号时,有可能会需要有两个 ssh key,但是如果生成 github 的 ssh key,就会把 gitlab 的账号给覆盖掉。那如果我们两个 ssh key 都要时,那就可以用 config 文件来管理两个 ssh key

获取第一个ssh key

1
2
$ cd ~/.ssh
$ ssh ssh-keygen -t ras -C "youremail@yourcompany.com"

这个时候可以一路回车,不输入任何字符,将自动生成 id_rsa 和 id_rsa.pub 文件。

获取第二个ssh key

1
$ ssh-keygen -t rsa -C "youremail@gmail.com"

不过,这个时候不能一路回车,否则邮箱将覆盖上一次生成的 ssh key,给这个文件起一个名字, 比如 id_rsa_github, 所以相应的也会生成一个 id_rsa_github.pub 文件。

两个 ssh key

此时查看.ssh下的目录文件,发现就会有 id_rsa_github 和 id_rsa_github.pub 两个文件。

.ssh 文件

添加秘钥

1
2
$ ssh-add ~/.ssh/id_rsa
$ ssh-add ~/.ssh/id_rsa_github

生成配置文件

在 ~/.ssh 目录下新建一个config文件

1
$ touch config

并添加下面的内容

1
2
3
4
5
6
7
8
9
10
# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github

给 github/gitlab 上添加 ssh key

查看 ssh key

1
$ less id_rsa_github.pub

将文本内容拷贝到https://github.com/settings/ssh。

测试

1
$ ssh -T git@github.com

如果有看到输出 Hi wjszxli! You’ve successfully authenticated, but GitHub does not provide shell access.,说明就成功的连上github了。