多账号git配置

在我们访问git服务器的时候,如果通过ssh的方式话,访问不同的服务器要使用不同的ssh-key。而有些private repository只对特定的账号开放。如果在同一台机器上需要用不同的账号访问不同的git服务器时,如何方便的进行账号配置和切换呢?

这就需要亮出ssh的config文件大法了。具体操作如下

1 新建git用户的ssh key

ssh key要放在~/.ssh目录下

1
2
3
$ ssh-keygen -t rsa -C "your@email.com"
# 设置名称为your_rsa,可以任意取名
Enter file in which to save the key (/home/yourname/.ssh/id_rsa): your_rsa

2 添加ssh key至ssh agent中

ssh默认只读取id_rsa,为了让ssh能读取新建的your_rsa,需要将其添加到ssh agent中

1
$ ssh-add ~/.ssh/your_rsa

如果出现Could not open a connection to your authentication agent的错误,就试着用以下命令:

1
2
$ ssh-agent bash
$ ssh-add ~/.ssh/your_rsa

3 修改ssh config文件

下面就要祭出让生活变得更简单的ssh config文件了。
修改~/.ssh/config文件,如果没有就创建一个。
我的~/.ssh/config文件配置如下

1
2
3
4
5
6
7
8
9
10
11
12
# 该文件用于配置私钥对应的服务器
# Default github user(first@mail.com)
Host gitlab-billsedison # 别名
HostName gitlab.com # host name
User git # 用户名,必须为git
IdentityFile ~/.ssh/billsedison_github # private key地址


Host github-billsedison
HostName github.com
User git
IdentityFile ~/.ssh/billsedison_gitlab

config文件好像是大小写敏感的,而且User git不能省略。

具体ssh config的用法可以参照这篇文章Simplify your life with an ssh config file

4 测试

先访问下gitlab

1
2
3
4
$ ssh -T gitlab-billsedison

# 输出
Welcome to GitLab, billsedison!

再访问下github

1
2
3
4
$ ssh -T github-billsedison

# 输出
Hi billsedison! You've successfully authenticated, but GitHub does not provide shell access.

使用git命令时,可以用

1
$ git clone gitlab-billsedison:mytest/mytest.git

如果使用了新账户,进行commitpush的时候还是要记得换下user.nameuser.email

1
2
$ git config --global user.name billsedison
$ git config --global user.email billsedison@163.com