日常使用 ssh 進(jìn)行免密登錄的時候,經(jīng)常會遇到這樣的問題。比如 ~/.ssh/ 目錄下已經(jīng)存在一個 id_rsa 私鑰在進(jìn)行其他業(yè)務(wù)的免密登錄,現(xiàn)在如果需要再配一個 github 的免密登錄,怎么辦呢?私鑰的名字又要固定為 id_rsa,總不可能在兩個私鑰間來回改名字吧
使用配置文件進(jìn)行多個私鑰的管理
我們可以在 ~/.ssh 目錄下創(chuàng)建一個 config 文件,文件內(nèi)容大致如下
Host github.com
IdentityFile ~/.ssh/id_rsa.github
User lionsu
每一項的作用留到后面再講,先把 ssh 的密鑰配完
使用命令 ssh-keygen 生成密鑰對
//指定生成密鑰的文件名 免得覆蓋現(xiàn)有的 id_rsa 文件
//這條命令也可以用于 Windows
$ssh-keygen -t rsa -f ~/.ssh/id_rsa.github
執(zhí)行完畢會在 ~/.ssh/ 目錄下生成 id_rsa.github 和 id_rsa.github.pub 兩個文件,id_rsa.github 是私鑰,需要放在本地,id_rsa.github.pub 是公鑰,需要配置到 github 的用戶設(shè)置頁面上
打開github配置頁面
登錄github之后,訪問 https://github.com/settings/keys 進(jìn)入設(shè)置頁,SSH and GPG keys這一欄是配置公鑰的地方

github配置公鑰.png
Title 先寫一個方便記憶標(biāo)識的名字(比如homePC)
然后用文本編輯器(記事本就可以)打開 id_rsa.github.pub,把內(nèi)容全部復(fù)制到 key 這一欄,一定要帶上文本開頭的
ssh-rsa, 否則 github 頁面會提示公鑰不合法,最后面的用戶名可以帶上也可以去掉
回到開頭的config文件
Host github.com
IdentityFile ~/.ssh/id_rsa.github
User lionsu
- Host 是需要免密登錄的域名,如果是服務(wù)器的話,便是ip地址(這一點沒有測試過),不過這里因為是github網(wǎng)站,所以這里Host一定要填 github.com,個人猜測應(yīng)該是跟 .git/config 這個配置文件里面的git url相關(guān)
- IdentityFile 本地私鑰的路徑,一定要準(zhǔn)確
- User 如果有多個 github 帳戶需要免密登錄,則用這一項進(jìn)行標(biāo)識(不一定要跟github站點上的用戶名一致,有關(guān)聯(lián)性方便標(biāo)識就行)