管理git生成的多個ssh key

http://www.bootcss.com/p/git-guide/

問題闡述

當有多個git帳號的時候,好比一個github,用於本身進行一些開發活動,再來一個gitlab,通常是公司內部的git。這二者你的郵箱若是不一樣的話,就會涉及到一個問題,生成第二個git的key的時候會覆蓋第一個的key,致使必然有一個用不了。css

問題解決

咱們能夠在~/.ssh目錄下新建一個config文件配置一下,就能夠解決問題git

具體步驟

  • 生成第一個ssh key(這裏我用於github,用的gmail郵箱)
ssh-keygen -t rsa -C "yourmail@gmail.com"

這裏不要一路回傳,讓你選擇在哪裏選擇存放key的時候寫個名字,好比 id_rsa_github,以後的兩個能夠回車。github

完成以後咱們能夠看到~/.ssh目錄下多了兩個文件docker

  • 生成第二個ssh key(這裏我用於gitlab,用的是公司郵箱)windows

    ssh-keygen -t rsa -C "yourmail@gmail.com"

    仍是同樣不要一路回車,在第一個對話的時候繼續寫個名字,好比 id_rsa_gitlab,以後的兩個能夠回車。bash

    完成以後咱們能夠看到如2中圖所標記,同樣出現兩個文件。(一個公鑰一個私鑰)ssh

  • 打開ssh-agent
    這裏若是你用的github官方的bash,ssh-agent -s,若是是其餘的,好比msysgit,eval $(ssh-agent -s)ide

  • 添加私鑰gitlab

    ssh-add ~/.ssh/id_rsa_github ssh-add ~/.ssh/id_rsa_gitlab
  • 建立並修改config文件測試

在windows下新建一個txt文本,而後將名字後綴一塊兒改爲config便可
在bash下的話直接touch config 便可。
添加一下內容

    # gitlab
    Host git.iboxpay.com
        HostName git.iboxpay.com  //這裏填大家公司的git網址便可
     port 22
PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_gitlab User zhangjun # github Host github.com HostName github.com
port 22 PreferredAuthentications publickey IdentityFile
~/.ssh/id_rsa_github User ZJsnowman
  • 在github和gitlab上添加公鑰便可,這裏再也不多說。

  • 測試

ssh -T git@github.com

分別測試githab和gitlub

PS:若是到這裏你沒有成功的話,別急,教你解決問題的終極辦法--debug

好比測試github,ssh -vT git@github.com

-v 是輸出編譯信息,而後根據編譯信息本身去解決問題吧。就我本身來講通常是config裏的host那塊寫錯了。


補充一下

若是以前有設置全局用戶名和郵箱的話,須要unset一下

git config --global --unset user.name
git config --global --unset user.email

而後在不一樣的倉庫下設置局部的用戶名和郵箱

好比在公司的repository下git config user.name "yourname" git config user.email "youremail" 在本身的github的倉庫在執行剛剛的命令一遍便可。

這樣就能夠在不一樣的倉庫,已不一樣的帳號登陸。

相關文章
相關標籤/搜索