0%

在系统中配置多个git ssh key

Git也用了比较久了,虽然很多高级的用法还没摸着门道,但有些知识还是值得记录的,这里把在系统中配置多个ssh key的方法记录一下,完成后可以为不同的网站启用不同的ssh key,为不同的项目配置不同的username和email。  其实在不同的网站都使用默认的ssh key也没问题,但隔离开来更为清晰安全,也能避免一些将来的误操作。

系统默认配置

在刚使用git时,会先生成一个默认的ssh公私钥对,在Windows上可以直接使用Git GUI来生成, 在*unix和Windows的git bash中也可以使用命令行生成:

1
ssh-keygen -t rsa -C "a@github.com"
生成后文件被存放为 "~/.ssh/id_rsa"(私钥)   和  "~/.ssh/id_rsa.pub"(公钥)  ,将公钥的内容添加到对应的github/gitlab的个人设置中即可,然后可以通过如下命令行(v应该表示"verbose",会显示更详细的信息,可以去掉)进行连接及认证测试:
1
ssh -vT git@github.com
最后再为git配置上默认的username和email即可:
1
2
git config –-global user.name "a"
git config –-global user.email "a@github.com"

配置多个ssh key

通过指定文件名称即可生成其它的ssh key:

1
ssh-keygen -t rsa -C "b@gitlab.com" -f ~/.ssh/gitlab_id_rsa
然后在 ~/.ssh 目录下新建一个名为"config"的文件,添加如下内容:
1
2
3
4
5
6
7
8
9
10
11
ServerAliveInterval 60

Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa

Host gitlab.com
HostName bitbucket.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_rsa
这样配置之后,在执行git操作时,会自动根据域名来使用不同的ssh key。

为项目单独设置username和email

最开始已经全局设置了username和email,但是如果在不同的网站使用的是不同的username和email,还需要为项目进行单独设置。 进入项目目录后,执行如下命令即可:

1
2
git config user.name "b"
git config user.email "b@gitlab.com"