前言
假设有两个git账号,一个github的私人号,一个gitlab的工作号,需要在windows下配置git多账号。
实现在同一个Idea中拉取不同GitLab/GitHub的代码,开发,Commit,Push等操作,互不干扰
一、生成git账号对应的公钥密钥?
1.github的配置
找到win环境下的安装的Git软件,打开Git软件的目录,点击打开Git Bash Here的控制台里
输入以下命令:
git config --global user.name "git私人号的名称" git config --global user.email "git私人号的邮箱"
生成github的密钥
ssh-keygen -t rsa -C "git私人号的邮箱"
进入密钥目录可以看到生成了一对(id_rsa密钥/id_rsa.pub公钥)。
注意:在Enter file in which to saven the key(/c/User/666/.ssh/is_rsa): 这句话,是默认公钥密钥的名字为id_rsa,如果想要需要命名为其它的,可以写/c/User/666/.ssh/你需要的名字。
添加密钥到ssh-agent
ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序,可以理解为“ssh-agent就是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其它程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。
eval "$(ssh-agent -s)"
将生成的ssh-key添加到ssh-agent
ssh-add ~/.ssh/名字
ssh-add ~/.ssh/id_rsa
2.gitlab的配置
在Git Bash Here的控制台里输入
git config --global user.name "git工作号的名称" git config --global user.email "git工作号的邮箱"
继续执行命令ssh-keygen -t rsa -C user.email
#生成gitlab的密钥 ssh-keygen -t rsa -C "git工作号的邮箱"
然后命名为id_rsa_company与github的私人号的公钥密钥区分开
注意:此处路径/c/Users/666/, 视个人路径而定
#将gitlab的密钥命名为id_rsa_company /c/Users/666/.ssh/id_rsa_company
进来密钥目录可以看到生成了一对(id_rsa_company密钥/id_rsa_company.pub公钥)
添加密钥到ssh-agent
ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序,
可以理解为“ssh-agent就是一个密钥管理器,运行ssh-agent以后,
使用ssh-add将私钥交给ssh-agent保管,
其它程序需要身份验证的时候可以将验证申请交给ssh-agent来完成整个认证过程。
eval "$(ssh-agent -s)"
将生成的ssh-key添加到ssh-agent
ssh-add ~/.ssh/名字
ssh-add ~/.ssh/id_rsa_company
二、添加多账号配置文件config
在Git Bash Here的控制台里创建文件:touch config
在Git Bash Here的控制台里输入命令:vi config
输入如下内容(因为该控制台使用的是linux规则,在输入前需要按一下字母键i,在linux下表示写;写完按Esc 输入:后按下WQ这两个字母键,此时在.ssh/目录下就有了config文件,注意没有后缀):
该文件分为多个用户配置,每个用户配置的说明:
Host 配置的别名(这里是自定义的host简称,以后连接远程服务器就可以用命令ssh myhost)
HostName 填写是目标主机的主机名,也就是平时我们使用ssh后面跟的地址名称(ssh地址“git@”后面到冒号前面的内容)
Port 端口 (如果使用标准端口22,则可以省略端口配置。如果不是,请添加对应的端口配置,一般某些私有部署的git仓库会更换端口号)
IdentityFile是对应的密钥文件(该host后台配置的公钥对应的私钥地址的绝对路径)
PreferredAuthentications: 配置登录时用什么权限认证 ,设为(publickey, password publickey, keyboard-interactive 等,一般使用publickey即可,git仓库均为这种形式)
User云端仓库登录用户名
在命令模式下,输入:wq或者:x,按下回车键,即可保存并退出 vi。
也可以使用笨方法:创建完config后,利用Notepad++工具打开,将多用户配置信息添加进去。
三、把公钥添加进github和gitlab账号中
用编辑器打开id_rsa.pub/id_rsa_company.pub使用Notepad++,默认编码utf-8,拷贝里面的全部内容。
1.登录github平台,添加私人号公钥
公钥标题随便写
2.登录gitlab平台,添加工作号公钥
某账户下的ssh key:某个账号的最高级key,只要是这个账号有的权限(任何项目),都能进行操作
某仓库的deploy keys:某个仓库的专有key,用这个key,只能操作这个项目,其它项目都没有权限
注意:此处ssh key是加到 某账户下的ssh key
某账户下的ssh key
登录进去后,点击Preferences-> SSH Keys
公钥标题随便写,将前面gitlab的公钥id_rsa_company.pub内容复制进来
四、远程测试连接
测试链接是否成功, 这里的github、gitlab是config文件中设置的Host
一般我们测试连通性时要输入:ssh -T git@gitlab.com 需要网站的域名,在.ssh文件的config配置之后直接使用主机名即Host的值代替网站名
注意:git和@中间没有空格
eg:
ssh -T git@github
github:运行命令后如果出现“Hi xxxx! You’ve successfully authenticated, but GitHub does not provide shell access.”,其中“xxxx”为你配置的 User 名字,这时配置显示成功了~
ssh -T git@gitlab
gitlab:运行命令后如果出现“Welcome to GitLab, @xxxx!”,其中“xxxx”为你配置的 User 名字,这时配置显示成功了~