ITmob-Ly
发布于 2022-09-14 / 421 阅读
0

Git配置多个密钥(SSH key)并且在不同的仓库配置不同的用户信息(user.name和user.email)

本文介绍怎样在同一台设备上配置生成和配置多个 SSH key,以 Github 和 Gitlab 为例。在文末介绍了如何在不同的代码仓库配置和使用不同的用户信息,比如:在 Github 和 Gitlab 代码库中使用不同的 user.name 和 user.email。

1 生成新的 SSH 密钥

$ ssh-keygen -t ed25519 -C "your_email@example.com"

> 输入保存密钥的路径和名称 (/c/Users/you/.ssh/id_rsa_github):[点击回车]
> 输入密码或直接回车
> 重新输入密码或直接回车

#生成第二个密钥
$ ssh-keygen -t ed25519 -C "your_email2@example.com"

> 输入保存密钥的路径和名称 (/c/Users/you/.ssh/id_rsa_gitlab):[点击回车]
> 输入密码或直接回车
> 重新输入密码或直接回车

2 将您的 SSH 密钥添加到 ssh-agent

  1. 如果你用的github官方的bash: ssh-agent -s; 如果是其他的,比如msysgit: eval $(ssh-agent -s)

  2. 添加私钥

ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_gitlab

3 创建config文件

  1. ~/.ssh 目录下创建config文件:
touch config
  1. 添加配置信息
# gitlab
Host gitlab.com
	HostName gitlab.com  //这里填你们公司的git网址即可
	PreferredAuthentications publickey
	IdentityFile ~/.ssh/id_rsa_gitlab

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

4 在Github和Gitlab中添加对应的公钥(id_rsa_github.pub 和 id_rsa_gitlab.pub)

5 测试

$ ssh -T git@github.com
> Hi yourname! You've successfully authenticated
$ ssh -T git@gitlab.com
> Welcome to GitLab, @your_email2

6 单独配置用户信息

到这里ssh key配置就成功了。但是如果不希望他们使用相同的全局设置,可以unset全局的配置,在不同的仓库设置不同的用户信息

  1. unset全局的配置
git config --global --unset user.name
git config --global --unset user.email
  1. 在bash中进入需要设置的仓库目录:
git config user.name "yourname"
git config user.email "youremail"