一、问题产生背景
工作用的公司 gitlab 账号,自己平常学习用的 github 账号,又只有一个电脑,公司账号当然不能用于github,所以需要分别配置两套密钥,分别用于自己搞事情研究和公司搬砖使用。
二、本地 git 账号关联远程 github|gitlab|gitee
我们必须将本地账号关联了远程账户,才能把本地代码提交到远程仓库上。
道理都一样,我们以 GitHub 为例:
1、本地创建ssh-key
// 查看是否已经创建过ssh-key
ll -a ~/.ssh/
首先,进入 .ssh 目录下
cd ~/.ssh/
接着,创建ssh-key,xxxxx@qq.com注意替换成你自己的邮箱账号
ssh-keygen -t rsa -C "xxxxx@qq.com"
一路回车执行完上述命令后,这时会在本地的.ssh目录创建两个文件:
2、把 id_rsa.pub 文件的内容复制到远程github上,如下图,即可正常push代码。
三、git 本地配置多平台账号
我们刚刚创建ssh-key(xxxxx@qq.com注意替换成你自己的邮箱账号)的时候,生成了下面两个文件,这样只能适用于一个账号多个平台,不能用于多个账号。
ssh-keygen -t rsa -C "xxxxx@qq.com"
紧接着,那我们就再生成一套新的密钥,起一个不同的名字,然后通过配置来区分github用我们这套新的账号配置,公司gitlab用我们刚刚第二步骤里生成的那套账号配置,不就可以了嘛!
说干就干,还是第一步,先进入到.ssh目录
cd ~/.ssh
再次执行ssh-keygen -t rsa -C "xxxxx@qq.com"
,这次换成你的另一个账号。
敲回车之后,修改密钥的名称,起一个不同的名字,如下图所示。
好了,这样我们就配置了两个账号的密钥,一个用来链接公司的gitlab,一个用来折腾自己的GitHub。
还有个问题,怎么知道你提交远程仓库的时候,用哪个秘钥呢?
我们还需要写个配置文件,当提交到公司的远程仓库xxx.gitlab.com的时候,我们用账号A,提交自己的xxx.github.com的时候,用账号B。
- 在.ssh目录新建config文件
执行命令:vi config
,敲下键盘的 i 键,切换至输入状态。 - 输入以下代码,注意改成你自己的账号,文件名字
# 第一个账号,默认使用的账号
Host github.com
HostName github.com
User xxxx@xx.com
IdentityFile ~/.ssh/id_rsa# 第二个账号
Host xxx.gitlabb.com # 你的第二个远程仓库地址,用第二个账号
HostName github.com
User xxxxx2@xx.com # 你的第二套账号邮箱
IdentityFile ~/.ssh/id_rsa_xxx # 你的第二套账号对应的秘钥
- 依次按下
esc
、:
,输入wq
,敲下回车,保存文件。
然后就可以顺利的进行多账号多个远程仓库的使用啦~