1. 程式人生 > >git 多套公、私鑰的配置以及使用

git 多套公、私鑰的配置以及使用

git 多套公、私鑰的配置以及使用


業務使用場景

在個人的實際開發中,我們通常會碰到這樣的場景:一個人同時擁有github賬號(個人的)和公司的git賬號(公司私有倉庫),或者某個人同時擁有多個github賬號,在這種情況下,要想輕鬆簡便地使用git,那麼不可避免地要配置多套公、私鑰(ssh key),甚至可以這麼說,有幾個git的賬號,那麼不可避免地就需要多少套公、私鑰。在單獨一個賬號的情況下,我們預設都是使用id_rsa(私鑰)和id_rsa.pub(公鑰),顯然預設的只能支援一個,那如果有多個賬號了,那該怎麼辦呢?請看本文詳解

步驟

  • 檢查是否已存在相應的ssh key
  • 生成ssh key,並新增至 ssh-agent
  • 在相應的賬號中新增生成的ssh key
  • 連線測試
  • FAQ

檢查是否已存在相應的ssh key

  1. 開啟終端
  2. 輸入 ls -al ~/.ssh
    以我個人的為例:
    ssh keys
    可以看見,介面中列了3套ssh keys(其中一套打了馬賽克��),一套預設的,一套github的,還有打馬賽克的那一套。當然這是我安裝過後的,假如你之前都沒有安裝過,理論上是一套都沒有的,沒有也沒啥關係,我們自己生成就好了
  3. 核對列出來的ssh key是否有已存在的,假如你沒有看到列出的公私鑰對,或是不想再用之前的公私鑰對,你可以選擇下面的步驟生成新的公私鑰對

生成新的ssh key,並新增至ssh-agent

  1. 開啟終端
  2. 使用ssh key生成命令:ssh-keygen -t rsa -b 4096 -C "[email protected]"
    注意:後面的郵箱對應相應賬號的郵箱,假如是github的賬號,且註冊賬號的郵箱為[email protected],則命令列為:ssh-keygen -t rsa -b 4096 -C "[email protected]
    這裡寫圖片描述
  3. 接下來會提示你儲存的ssh key的名稱以及路徑。預設路徑是(/Users/you/.ssh/id_rsa) (you為使用者個人目錄)。這一步很重要,如果你使用預設的,且下一個賬號也是使用預設的路徑和檔名,那麼之前的ssh key就會被後來生成的ssh key重寫,從而導致之前的賬號不可用。因此,正確的做法是給它命名,最吼以應用名進行命名,因為更容易區分。以下是我個人配的:/Users/hongqiangren./.ssh/github_rsa

    這裡寫圖片描述
  4. 接下來會提示設定ssh 安全密碼。這一步可以使用預設的(即不設定密碼),直接按回車即可。倘若想了解更多關於ssh key密碼設定的細節,可訪問: “Working with SSH key passphrases”
    這裡寫圖片描述

  5. ssh key 生成後,接下來需要為ssh key 新增代理,這是為了讓請求自動對應相應的賬號。網上很多文章寫到需要另外配置config檔案,經本人親測,其實是不需要的,在生成了ssh key後,通過為生成的ssh key新增代理即可,為ssh key 新增代理命令:ssh-add ~/.ssh/xxx_rsa,xxx_rsa 是你生成的ssh key 的私鑰名。下圖以我自己的為例(本機為OS X系統)
    這裡寫圖片描述

在相應的賬號中新增生成的ssh key

  1. 登入相應的git賬號,此處以GitHub的為例,登入後點擊使用者影象,選擇:Setting。登入GitHub
    這裡寫圖片描述
  2. 找到SSH and GPG keys,點選並新增ssh key
    這裡寫圖片描述
    這裡寫圖片描述
    這裡寫圖片描述
  3. 獲取生成的public key,開啟終端,使用命令列:cat ~/.ssh/xxxx.pub,此處以我個人的public key 為例:
    這裡寫圖片描述
  4. 複製該內容,並貼上至上上圖中的Key裡面。然後點選儲存
    這裡寫圖片描述

連線測試

接下來我們測試是否配置成功,開啟終端,輸入:ssh -T [email protected]
這裡寫圖片描述
如果顯示以上資訊,那麼恭喜你,公私鑰已經成功配置! :-)

非gitHub 的專案如何配置?

對於非github型別的公、私鑰配置,其實是大同小異,因涉及到保密,我不方便講本公司的git公私鑰配置貼出來(實際上與以上大同小異)。相信聰明的小夥伴能根據以上的資訊配置自己公司的ssh key


FAQ

講道理,之所以寫這篇文章,是因為之前遇到了這個坑,在網上找的文章,發現各種抄來抄去,並沒有實際地解決問題。既然我看到沒有一篇讓我感到爽,並能實際解決問題的文章,恰巧自己又剛好解決了相關問題,那倒不如自己寫一篇。希望能幫助到某些小夥伴!