在我们访问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 测试
先访问下gitlab1
2
3
4$ ssh -T gitlab-billsedison
# 输出
Welcome to GitLab, billsedison!
再访问下github1
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
如果使用了新账户,进行commit
和push
的时候还是要记得换下user.name
和user.email
。1
2$ git config --global user.name billsedison
$ git config --global user.email billsedison@163.com