Git配置多个ssh-key管理不同仓库

问题描述

Git配置多个ssh-key管理不同仓库

目前手上有多个git账号,分别用于个人学习、公司内部的一些项目,而且需要在同一台电脑上去管理这些账号。

  • github,个人学习收集
  • gitlab01,公司内部git
  • gitlab02,个人测试

这些账号的邮箱设置不同的话,默认生产新key会把旧key覆盖掉。要解决这个问题,就需要生成多个不同的公私钥对。

解决办法

1、首先重置一下全局的邮箱和用户名配置:

git config --global --unset user.name
git config --global --unset user.email

2、生成多个密钥对,且邮箱设置不同,生成过程手动填写目标文件保存路径,不要使用默认的。

ssh-keygen -t rsa -C "[email protected]"

生成过程省略,完成之后~/.ssh目录下文件列表应该如下:

[root@kylin ~/.ssh]# ls ~/.ssh 
id_rsa_github id_rsa_github.pub id_rsa_gitlab id_rsa_gitlab.pub know_hosts

3、开启ssh-agent,且添加私钥

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

4、在~/.ssh目录下新建一个名为config的文件,内容如下:

# github "[email protected]"
 Host github.com
 HostName github.com
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/id_rsa_github
# gitlab "[email protected]"
 Host gitlab.com
 HostName gitlab.com
 PreferredAuthentications publickey
 IdentityFile ~/.ssh/id_rsa_gitlab

参数说明:

  • Host:填写git服务器的域名。
  • HostName:填写git服务器的域名。
  • IdentityFile:指定私钥的路径。

调整config文件的权限:

$ chmod 644 ~/.ssh/config

然后github 和 gitlab上添加好公钥,这里自行搜索。

5、测试下是否认证成功,以测试 github为例:

ssh -vT [email protected]

6、进入不同的仓库,配置局部的邮箱和用户名:

git config user.name "yourname" 
git config user.email "youremail"

此时,便可以在不同的仓库使用不同的账号登录了。

后续还会分享更多运维技巧,欢迎关注。

相关推荐