前言
平时只用一个GitHub账号或则一直使用http、HTTPS连接git服务器觉得没什么,进来因为不同的需求注册了好几个GitHub账号,在同一台电脑上提交不同GitHub账号下的项目时发现提交不了,很麻烦,同理,同时用ssh管理多个git平台上的项目时也会遇到同样的麻烦,经过查找资料,很好的解决了这个问题
参考资料:Mac下配置多个SSH-Key 、ssh配置-使用本地多个私钥连接多个账户的github rsa认证
一、生成rsa秘钥
ssh-keygen -t rsa -C "youremail@email.com"
然后根据提示输入相应内容,也可以图方便一路点击Enter
回车键生成不设置密码的默认rsa文件
二、将生成的公钥id_rsa.pub
的内容复制到对应的git平台如GitHub、GitLab等对应的地方
![](https://img.haomeiwen.com/i1605558/1e96e6aecbb97231.png)
理论上如果过个git平台上用的是同一个邮箱账号,这一个生成出来的可以用在不同的git平台上,但只要账号的邮箱不一样,就需要重新根据邮箱账号生成
二、配置多账号或多平台的ssh
1、进入当前用户的.ssh文件目录,比如Mac
cd ~/.ssh
#如果当前文件夹下没有config文件,创建一个名字叫config的txt文件
vim cnofig
2、编辑config文件,给每一个账号或平台设置一个对应的别名,设置对应的ssh私钥
特别说明:
Host是@
到:
中间的内容
GitHub的ssh例子
替换Host前:git@github.com:onlyking/iosTool.git
替换Host后:git@github-onlyking:onlyking/iosTool.git
GitLab的ssh例子:
替换Host后
替换Host前:ssh://git@124.123.122.121:1123/dog/happydog.git
替换Host后:ssh://git@gitlab-dog:1123/dog/happydog.git
ssh的git的请求过程是先用Host去匹配.ssh下的config文件,然后找到对应配置的私钥及将HostName替换Host取访问git服务器,如果没有配置config文件,找的是.ssh目录下的默认私钥
Host gitlab-dog
HostName 124.123.122.121
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_fake_rsa
# git@github.com:onlyking/xxx.git -> git@github-onlyking:onlyking/xxx.git
Host github-onlyking
User git
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_onlyking_rsa
#git@github.com:happydog/xxx.git -> git@github-dog:happydog/xxx.git
Host github-dog
User git
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_dog_rsa
3、修改git仓库URL
修改项目的远程仓库地址前:
![](https://img.haomeiwen.com/i1605558/5be020687bf7ba69.png)
修改项目的远程仓库地址后:
![](https://img.haomeiwen.com/i1605558/1ec2de963936746a.png)
网友评论