在同一台电脑上使用多个 SSH KEYS (GITHUB OR GITLAB)

1. 前言

很多时候,我们需要在自己的电脑上配置多个 ssh keys。比如个人的 github 和公司的 gitlab。折腾了很久,终于找到了一个说明清晰的文章,我尝试着翻译一下。

原文链接 Multiple SSH keys for different accounts on Github or Gitlab

2. 多个 github 账号

  1. 创建 ssh-key,下面这条命令无需赘言
$ ssh-keygen -t rsa -C "your_name@home_email.com"
  1. 输入命令然后 enter 就行,接下来会出现这样的提示
Generating public/private rsa key pair. 
Enter file in which to save the key (/home/user_name/.ssh/id_rsa):

你可以自己取个名字,用以标识不同的账号,比如 id_rsa_home。 也可以建立一个单路的文件夹来存放, 比如:/home/user_name/.ssh/home/id_rsa 。你也可以改成别的路径。输入完成后,继续 enter,会提示设置短语(passphrase),这个我偷懒就直接 enter 了,没有设置短语。

  1. 创建第二个 ssh-key,重复上面的步骤就可以了,只是在第 2 步的时候换一个名字或者路径就可以了。
  2. 添加配置文件
$ cd ~/.ssh/
$ touch config
$ nano config

添加以下内容,都是固定格式,只需要更改 IdentifyFile 为对应的文件名或者路径就可以了

# Home account
Host home.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_home

# Company account
Host company.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company

然后删除缓存的 key

$ ssh-add -D

如果提示一下内容

Could not open a connection to your authentication agent.

你需要启动 ssh-agent

eval `ssh-agent -s`

重新执行上一条命令,然后可以通过以下命令检查你的配置

$ ssh-add -l
2048 d4:e0:39:e1:bf:6f:e3:26:14:6b:26:73:4e:b4:53:83 /home/user/.ssh/id_rsa_home (RSA)
2048 7a:32:06:3f:3d:6c:f4:a1:d4:65:13:64:a4:ed:1d:63 /home/mateusz/.ssh/id_rsa_company (RSA)

如果什么都没输出,你需要执行以下命令(将后面的路径更改为对应的路径)

ssh-add ~/.ssh/id_rsa_company
ssh-add ~/.ssh/id_rsa_home

最后,你可以愉快的测试你的 ssh-key 能否正常连接

$ ssh -T git@home.github.com
Hi home_user! You've successfully authenticated, but GitHub does not provide shell access.

$ ssh -T git@work.github.com
Hi company_user! You've successfully authenticated, but GitHub does not provide shell access.

3. github 和 gitlab

我个人就输入这种情况,公司用的 gitlab,同时我要配置我自己的 github。同上面的配置文件,主要是修改了 Host 配置项

# GITLAB
Host gitlab.company_url.com
HostName gitlab.company_url.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company

# GITHUB
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_home

然后可以测试下

$ ssh -T git@gitlab.company_url.com
Welcome to GitLab, CompanyUser!

$ ssh -T git@github.com
Hi home_user! You've successfully authenticated, but GitHub does not provide shell access.
关注下面的标签,发现更多相似文章
评论
说说你的看法