首页 > 建站教程 > 其他 >  windows下git多账号配置详解正文

windows下git多账号配置详解

前言

假设有两个git账号,一个github的私人号,一个gitlab的工作号,需要在windows下配置git多账号。

实现在同一个Idea中拉取不同GitLab/GitHub的代码,开发,Commit,Push等操作,互不干扰


一、生成git账号对应的公钥密钥?

1.github的配置

找到win环境下的安装的Git软件,打开Git软件的目录,点击打开Git Bash Here的控制台里

git多账号配置


输入以下命令:

git config --global user.name "git私人号的名称" 
git config --global user.email "git私人号的邮箱"

git多账号配置

生成github的密钥

ssh-keygen -t rsa -C "git私人号的邮箱"

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/你需要的名字。

git多账号配置

添加密钥到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

git多账号配置


2.gitlab的配置

在Git Bash Here的控制台里输入

git config --global user.name "git工作号的名称"  
git config --global user.email "git工作号的邮箱"

git多账号配置

继续执行命令ssh-keygen -t rsa -C user.email

#生成gitlab的密钥
ssh-keygen -t rsa -C "git工作号的邮箱"

然后命名为id_rsa_company与github的私人号的公钥密钥区分开

注意:此处路径/c/Users/666/, 视个人路径而定

git多账号配置

#将gitlab的密钥命名为id_rsa_company
/c/Users/666/.ssh/id_rsa_company

进来密钥目录可以看到生成了一对(id_rsa_company密钥/id_rsa_company.pub公钥)

git多账号配置

添加密钥到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

git多账号配置


二、添加多账号配置文件config

在Git Bash Here的控制台里创建文件:touch config

git多账号配置

在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++工具打开,将多用户配置信息添加进去。

git多账号配置


三、把公钥添加进github和gitlab账号中

用编辑器打开id_rsa.pub/id_rsa_company.pub使用Notepad++,默认编码utf-8,拷贝里面的全部内容。

1.登录github平台,添加私人号公钥

公钥标题随便写

git多账号配置

git多账号配置

git多账号配置

git多账号配置


2.登录gitlab平台,添加工作号公钥

某账户下的ssh key:某个账号的最高级key,只要是这个账号有的权限(任何项目),都能进行操作

某仓库的deploy keys:某个仓库的专有key,用这个key,只能操作这个项目,其它项目都没有权限

注意:此处ssh key是加到 某账户下的ssh key

某账户下的ssh key

登录进去后,点击Preferences-> SSH Keys

git多账号配置

公钥标题随便写,将前面gitlab的公钥id_rsa_company.pub内容复制进来

git多账号配置

git多账号配置


四、远程测试连接

测试链接是否成功, 这里的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 名字,这时配置显示成功了~

git多账号配置

ssh -T git@gitlab

gitlab:运行命令后如果出现“Welcome to GitLab, @xxxx!”,其中“xxxx”为你配置的 User 名字,这时配置显示成功了~

git多账号配置