项目开发时要使用多个git服务器,之前都是用http地址的方式同步,这种方式优点是不需要做任何配置,直接就可以做代码同步,缺点是每次都要输账号密码。
每次输账号密码实在是太费时间了,就找了一下多账号ssh key配置的方法。
1.不同的账号生成对应的公钥文件
生成key的方式大家应该很熟悉 ssh-keygen -t rsa -C "test1@test.com"
$ ssh-keygen -t rsa -C "test@test.com"这里就要输入文件名,默认生成的文件名是id_rsa,为了便于区分,可以将文件名设为类似于id_rsa_github,id_rsa_gitlab的方式。
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/zhong/.ssh/id_rsa):
之后就能在.ssh看到对应文件名生成的密钥文件。
2.配置config文件
ssh访问git时,默认使用的是文件名是id_rsa的密钥。我们需要在.ssh目录下新建config文件,在config文件中配置访问不同git服务器时使用的密钥。
config文件内容格式:
Host github.com
HostName github.com
IdentityFile /c/Users/zhong/.ssh/id_rsa_github
在git服务器的添加完ssh key之后,同步代码的时候就不需要输账号密码了。
附:
git remote url从http改成 ssh的方式:
删除origin后重新添加
git remote rm origin
git remote add origin {ssh url}
20161017补充:
1.可以通过执行ssh -T git@{代码服务器域名} 来测试公钥配置是否成功(ssh -vT git@{server}可以打出具体的链接日志,方便查问题)
2.在windows下配置config文件时,在cmd执行ssh -T git@{代码服务器域名} 命令,即使公钥配置是正确的,也会报Permission denied,config只有在git-bash里执行命令才有效 ps:被坑了一晚, 都是泪啊~~~~
参考:
http://www.111cn.net/sys/linux/71236.htm
http://www.111cn.net/sys/linux/87516.htm