Git设置多个SSH-Key

本文介绍如何配置Git的SSH-Key,以及在一台电脑上配置多个远程仓库网站的SSH-Key。

Git与远程仓库,如Github、Gitee、GitLab连接时需要输入账号密码,但是也可以通过配置SSH Key的方式免去频繁输入账号密码的情况。另外,可能会存在需要配置多个远程仓库,或者同种远程仓库需要配置多个账号的SSH Key的情况,比如连接公司的仓库需要一个,连接自己的仓库需要一个。

1. 单个SSH Key配置

1.1 生成SSH Key公钥私钥

打开git bash,输入以下命令:

1
ssh-keygen -t rsa -C 'xxxxx@youremail.com'

一路回车,默认会在C:\Users\Username\.ssh目录下生成两个文件:id_rsaid_rsa.pub,前者为私钥,需要放在本地,后者为公钥,需要配置到远程仓库中。

1.2 在远程仓库中配置SSH Key公钥

登录远程仓库网站(Github、Gitee、GitLab),找到关于SSH Key的设置。

用记事本打开id_rsa.pub,复制公钥,粘贴到远程仓库的SSH Key设置中。

完成后根据远程仓库类别,输入以下命令进行测试:

1
2
3
ssh -T git@github.com
ssh -T git@gitee.com
ssh -T git@gitlab.com

如果连接的是公司的远程仓库,@后面接的就是公司的远程仓库地址。

2. 多个SSH Key配置

注:使用多个SSH Key的话,需要在Git项目中配置本地的name和email,这样提交代码时,使用的就是local配置,而非global配置。只需要创建配置文件config即可。

2.1 生成多个SSH Key

SSH Key文件不能同名。打开git bash,输入以下命令:

1
ssh-keygen -t rsa -C 'xxxxx@youremail.com' -f ~/.ssh/id_rsa_github

默认会在C:\Users\Username.ssh中生成指定名称的id_rsaid_rsa.pub

然后像配置单个SSH Key一样,在远程仓库中添加SSH Key公钥id_rsa.pub

2.2 创建并配置config文件

C:\Users\Username.ssh文件夹下创建一个config文件,无文件名后缀。

使用记事本打开,编辑以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Github配置
Host github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa_github
User for-sea

# GitLab配置
Host gitlab.com
Hostname gitlab.com
IdentityFile ~/.ssh/id_rsa_gitlab
User for-sea

# 公司配置
Host 127.0.0.1 # 指定IP
Port 8080 # 指定端口
Hostname 127.0.0.1 # IP名,最好与IP相同
IdentityFile ~/.ssh/id_rsa_company # 认证文件
User 员工 # 用户名

配置完成后依然是输入以下命令进行测试:

1
2
3
ssh -T git@github.com
ssh -T git@gitee.com
ssh -T git@gitlab.com

3. 多个SSH Key情况下提交代码

3.1 local配置

在Git项目根目录打开Git Bash,输入以下命令:

1
2
git config --local user.name 用户名
git config --local user.email 邮箱

在Git项目的根目录/.git/config文件中,可以看到[user]配置即为配置成功,此后再提交代码,则会使用该name和email,在不同的项目中即可使用不同的账户提交到不同的远程仓库网站。

image-20241008114837925

可以使用git config --global --list查看全局配置,使用git config --global --list查看项目本地配置。

3.2 提交代码

提交代码时,可以使用Git Bash命令行,也可以使用IDEA连接远程仓库提交。

1
2
3
4
# 提交代码三板斧
git add .
git commit -m "提交信息"
git push origin 分支