本文介绍怎样在同一台设备上配置生成和配置多个 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
-
如果你用的github官方的bash:
ssh-agent -s
; 如果是其他的,比如msysgit:eval $(ssh-agent -s)
-
添加私钥
ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa_gitlab
3 创建config文件
- 在
~/.ssh
目录下创建config文件:
touch config
- 添加配置信息
# 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全局的配置,在不同的仓库设置不同的用户信息
- unset全局的配置
git config --global --unset user.name
git config --global --unset user.email
- 在bash中进入需要设置的仓库目录:
git config user.name "yourname"
git config user.email "youremail"