git多账号ssh-key配置

时间:2022-07-11 19:28:44

项目开发时要使用多个git服务器,之前都是用http地址的方式同步,这种方式优点是不需要做任何配置,直接就可以做代码同步,缺点是每次都要输账号密码。

每次输账号密码实在是太费时间了,就找了一下多账号ssh key配置的方法。

1.不同的账号生成对应的公钥文件

生成key的方式大家应该很熟悉   ssh-keygen -t rsa -C "test1@test.com"

$ ssh-keygen -t rsa -C "test@test.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/zhong/.ssh/id_rsa):
这里就要输入文件名,默认生成的文件名是id_rsa,为了便于区分,可以将文件名设为类似于id_rsa_github,id_rsa_gitlab的方式。

之后就能在.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服务器指定对应的IdentityFile。


在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