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

背景

一般咱們有使用 Github、Gitlab,當 Github 或 Gitlab 下有多個帳號,你會發現你的 ssh key 不夠用了,由於站點會給你個提示:git

ssh key already in use github

這個時候咱們能夠採用以下作法github

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

實操

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

用不一樣的郵箱建立不一樣的公鑰/私鑰對ssh

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

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

  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 不同,這就是關鍵之處。code

你們回憶下咱們是怎麼 clone Github 的?域名

git@github.com:username/projectname.git

分析這個地址 git@github.com 告訴 ssh 要登陸的主機,username 和 projectname 看字面意思就理解,不贅述。it

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

若是你們這麼 clone Github:class

git@github2.com:username/projectname.git

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

相關文章
相關標籤/搜索