問題闡述
當(dāng)有多個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中圖所標(biāo)記炕婶,一樣出現(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í)行剛剛的命令一遍即可审磁。
這樣就可以在不同的倉庫,已不同的賬號登錄岂座。