git 设置本地配置多个账户对应不同的 ssh key

一般是这样生成 ssh key 的:

1
ssh-keygen -t rsa -C "example@email.com"

经过多步的操作后,会在 ~/.ssh/ (linux) ,C:\Users\\username\.ssh\ (windows)下生成公钥和私钥,默认名称为:id_rsaid_rsa.pub文件。

上述的操作确实可以解决使用同一个邮箱账户配置git ssh key的问题,但如果我们的机器不仅仅使用github,还需要使用到公司的gitlab呢?

一般公司都是用企业邮箱注册的 gitlab,这样使用通用邮箱生成的 ssh key 便无法通用,从而还需要再使用 ssh 生成一个关联企业邮箱的公私钥,如果使用默认的生成 key 命令,则会因为生成的 key 文件的名称不同,所以会有覆盖掉之前生成的 key 的问题或者根本不允许再次生成相同文件名的公私钥,因而导致一台机器上无法同时使用多个 key。

如何解决git配置多个 ssh key 时如何解决冲突的问题,即每次生成 key 的时候,给 key 取一个自己定义的别名,然后修改 ssh key 的配置文件即可。

step 1. 首先生成不同名称的 key 文件(公私钥)

如生成一个 github 帐号使用的 key:

1
ssh-keygen -t rsa -C "github@email.com" -f ~/.ssh/github_id_rsa

如生成一个 github 帐号使用的 key:

1
ssh-keygen -t rsa -C "gitlab@email.com" -f ~/.ssh/gitlab_id_rsa

上述命令执行之后,在相应的目录下~/.ssh/(linux),C:\Users\\username\.ssh\(windows),生成了两种key。

step 2. 给远程仓库配置添加信任 ssh key

step 3. 配置 config

我们需要在目录:~/.ssh/(linux) ,C:\Users\\username\.ssh\(windows),创建config文件,并且配置ssh key的路由策略:

linux 中的配置如下:

1
2
3
4
5
6
7
8
9
10
11

# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa

widows 中的配置如下:(windows下配置~/.ssh不识别)

1
2
3
4
5
6
7
8
9
10
11
12

# 配置github.com
Host github.com
HostName github.com
IdentityFile C:\\Users\\username\\.ssh\\github_id_rsa
PreferredAuthentications publickey

# 配置gitlab.com
Host gitlab.com
HostName gitlab.com
IdentityFile C:\\Users\\username\\.ssh\\gitlab_id_rsa
PreferredAuthentications publickey

step 4. 测试 ssh key 是否通过

使用命令:

1
ssh -T git@github.com

测试是否配置成功。

updated updated 2020-03-01 2020-03-01
本文结束感谢阅读

本文标题:git 设置本地配置多个账户对应不同的 ssh key

本文作者:木鲸鱼

微信公号:木鲸鱼 | woodwhales

原始链接:https://woodwhales.cn/2019/11/11/052/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%