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

-
生成第二個ssh key(這里我用于gitlab,用的是公司郵箱)
ssh-keygen -t rsa -C "yourmail@gmail.com"
還是一樣不要一路回車,在第一個對話的時候繼續(xù)寫個名字,比如 id_rsa_gitlab,之后的兩個可以回車。
完成之后我們可以看到如2中圖所標記,一樣出現(xiàn)兩個文件。(一個公鑰一個私鑰)
打開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下新建一個txt文本,然后將名字后綴一起改成config即可
在bash下的話直接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上添加公鑰即可,這里不再多說。
測試

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