管理git生成的多個ssh key

問題闡述

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

問題解決

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

具體步驟

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

這裏不要一路回傳,讓你選擇在哪裏選擇存放key的時候寫個名字,好比 id_rsa_github,以後的兩個能夠回車。
完成以後咱們能夠看到~/.ssh目錄下多了兩個文件 java


~/.ssh目錄下的文件
  • 生成第二個ssh key(這裏我用於gitlab,用的是公司郵箱) git

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

    仍是同樣不要一路回車,在第一個對話的時候繼續寫個名字,好比 id_rsa_gitlab,以後的兩個能夠回車。
    完成以後咱們能夠看到如2中圖所標記,同樣出現兩個文件。(一個公鑰一個私鑰) github

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

  • 添加私鑰 bash

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

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

# gitlab Host git.iboxpay.com HostName git.iboxpay.com //這裏填大家公司的git網址便可 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上添加公鑰便可,這裏再也不多說。 測試

  • 測試


分別測試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的倉庫在執行剛剛的命令一遍便可。

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




http://www.jianshu.com/p/f7f4142a1556

相關文章
相關標籤/搜索