問題的原因:
? ? 生成秘鑰的時候默認(rèn)情況下每個賬戶生成的秘鑰位置和名稱都是相同的趣避,這樣后生成的秘鑰就會覆蓋前面的秘鑰導(dǎo)致其失效,而 GitLab 和 GitHub 上雖有生成秘鑰的指引文章,但沒有特殊說明這塊笨奠。
解決方法:
? ? 在生成后一個秘鑰的時候?qū)ζ渲匦旅员苊鉀_突,同時將不同的秘鑰配置到相對應(yīng)的Host上面日矫,這樣在訪問不同的遠程倉庫時調(diào)用不同的key,沖突也就解決了。
具體操作:
生成 GitLab 秘鑰
本地生成ssh keys命令:ssh-keygen -t rsa -C "注冊的gitlab郵箱"绑榴,生成的公司秘鑰會提示是否需要重命名哪轿,公司 GitLab 的秘鑰我們就使用默認(rèn)名稱,直接回車跳過翔怎,另外還會提示你設(shè)置密碼,設(shè)置密碼的話后續(xù)登陸會比較麻煩窃诉,也直接跳過杨耙。
查看 .ssh/目錄(/Users/mac用戶名/.ssh/),可以看到公私秘鑰已經(jīng)生成飘痛,名稱分別為id_rsa.pub珊膜、id_rsa
執(zhí)行命令查看公鑰內(nèi)容:cat ~/.ssh/id_rsa.pub,或者直接用 Sublime Text2 編輯器打開id_rsa.pub宣脉。
將這部分代碼添加到到 GitLab 賬戶的的 SSH Keys 中即可车柠。
生成 GitHub 秘鑰
終端執(zhí)行命令:ssh-keygen -t rsa -C "注冊的github郵箱",這次一定要注意塑猖,對生成定的秘鑰進行重命名竹祷,這里暫且重命名為 id_rsa_github ,同樣不設(shè)置密碼⊙蚬叮可以看到生成的公私秘鑰已經(jīng)分別被重命名為 id_rsa_github.pub 和 id_rsa_github塑陵。
可以查看公鑰里面的內(nèi)容:cat ~/.ssh/id_rsa_github.pub
添加到到 GitHub 賬戶的的 SSH Keys 中即可
GitLab 和 GitHub 的秘鑰是分開生成了,可怎么讓這兩份秘鑰分別對應(yīng)到相應(yīng)的遠程倉庫呢蜡励?就是讓id_rsa.pub認(rèn)得gitlab,讓 id_rsa_github.pub 認(rèn)得github令花。既然不能自動識別,那就只好手動設(shè)置了:
配置config
在.ssh/目錄下新建config文件:touch config巍虫,通過 Sublime Text2 編輯器進行如下配置:
# GitLab
Host gitlab ?(隨意取名)
HostName git.xxx.cn ?(公司的 GitLab host)
IdentityFile ~/.ssh/id_rsa
# GitHub
Host github
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
檢測
ssh -T git@github
ssh -T git@gitlab
如果沒有報錯,就說明設(shè)置成功了~