如何管理多個 Github 賬號的 ssh key?

背景

通常我們有使用 Github、Gitlab,當 Github 或 Gitlab 下有多個賬號,你會發現你的 ssh key 不夠用了,因爲站點會給你個提示:

ssh key already in use github

這個時候我們可以採用如下做法

  1. 生成多個公鑰/私鑰對
  2. 對不同的域名配置不同的私鑰

實操

  1. 生成多個公鑰/私鑰對
ssh-keygen -t rsa -C "你的郵箱"

用不同的郵箱創建不同的公鑰/私鑰對

  1. 添加私鑰
ssh-add '私鑰路徑'

ssh-add 提示並將用戶的使用的私鑰添加到由ssh-agent 維護的列表中. 此後, 當使用公鑰連接到遠程 SSH 或 SCP 主機時,不再提示相關信息

  1. 創建配置文件

在 .ssh 目錄創建 config 文件,配置如下內容

# gitlab
    Host git.iboxpay.com
    HostName git.iboxpay.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa

# github
    Host github2.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/feygh

# github

   Host github.com
   HostName github.com
   PreferredAuthentications publickey
   IdentityFile ~/.ssh/id_rsa

這個配置文件中 Gitlab 下的 ssh 通信都走 id_rsa 公鑰加密,所以你在 Gitlab 倉庫中要複製 id_rsa 這個公鑰過去;
值得注意的是,這裏有兩個 Github 配置,仔細觀察下 HostName 都是 github.com,但是 Host 不一樣,這就是關鍵之處。

大家回憶下我們是怎麼 clone Github 的?

[email protected]:username/projectname.git

分析這個地址 [email protected] 告訴 ssh 要登錄的主機,username 和 projectname 看字面意思就理解,不贅述。

在這個配置文件中 Host 就是和 github.com 這個對應,HostName 是真實的物理連接 Host。

如果大家這麼 clone Github:

[email protected]:username/projectname.git

那麼進行這個 ssh 連接的時候,會命中 ssh config 中 Host 爲 github2.com 的配置,反過來亦然。也就說你在 clone Github 另一個項目的時候要手動修改下地址爲上述地址即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章