問(wèn)題闡述
當(dāng)有多個(gè)git賬號(hào)的時(shí)候,比如一個(gè)github,用于自己進(jìn)行一些開(kāi)發(fā)活動(dòng),再來(lái)一個(gè)gitlab,一般是公司內(nèi)部的git。這兩者你的郵箱如果不同的話(huà),就會(huì)涉及到一個(gè)問(wèn)題,生成第二個(gè)git的key的時(shí)候會(huì)覆蓋第一個(gè)的key,導(dǎo)致必然有一個(gè)用不了。
問(wèn)題解決
我們可以在~/.ssh目錄下新建一個(gè)config文件配置一下,就可以解決問(wèn)題
具體步驟
- 生成第一個(gè)ssh key(這里我用于github,用的gmail郵箱)
ssh-keygen -t rsa -C "yourmail@gmail.com"
這里不要一路回傳,讓你選擇在哪里選擇存放key的時(shí)候?qū)憘€(gè)名字,比如 id_rsa_github,之后的兩個(gè)可以回車(chē)。
完成之后我們可以看到~/.ssh目錄下多了兩個(gè)文件

-
生成第二個(gè)ssh key(這里我用于gitlab,用的是公司郵箱)
ssh-keygen -t rsa -C "yourmail@gmail.com"
還是一樣不要一路回車(chē),在第一個(gè)對(duì)話(huà)的時(shí)候繼續(xù)寫(xiě)個(gè)名字,比如 id_rsa_gitlab,之后的兩個(gè)可以回車(chē)。
完成之后我們可以看到如2中圖所標(biāo)記,一樣出現(xiàn)兩個(gè)文件。(一個(gè)公鑰一個(gè)私鑰)
打開(kāi)ssh-agent
這里如果你用的github官方的bash,ssh-agent -s,如果是其他的,比如msysgit,eval $(ssh-agent -s)-
添加私鑰
ssh-add ~/.ssh/id_rsa_github ssh-add ~/.ssh/id_rsa_gitlab 創(chuàng)建并修改config文件
在windows下新建一個(gè)txt文本,然后將名字后綴一起改成config即可
在bash下的話(huà)直接touch config 即可。
添加一下內(nèi)容
# gitlab
Host git.iboxpay.com
HostName git.iboxpay.com //這里填你們公司的git網(wǎng)址即可
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitlab
User zhangjun
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
User ZJsnowman
在github和gitlab上添加公鑰即可,這里不再多說(shuō)。
測(cè)試

PS:如果到這里你沒(méi)有成功的話(huà),別急,教你解決問(wèn)題的終極辦法--debug
比如測(cè)試github,ssh -vT git@github.com
-v 是輸出編譯信息,然后根據(jù)編譯信息自己去解決問(wèn)題吧。就我自己來(lái)說(shuō)一般是config里的host那塊寫(xiě)錯(cuò)了。
補(bǔ)充一下
如果之前有設(shè)置全局用戶(hù)名和郵箱的話(huà),需要unset一下
git config --global --unset user.name
git config --global --unset user.email
然后在不同的倉(cāng)庫(kù)下設(shè)置局部的用戶(hù)名和郵箱
比如在公司的repository下git config user.name "yourname" git config user.email "youremail" 在自己的github的倉(cāng)庫(kù)在執(zhí)行剛剛的命令一遍即可。
這樣就可以在不同的倉(cāng)庫(kù),已不同的賬號(hào)登錄。