不少時候,咱們須要在本身的電腦上配置多個 ssh keys。好比我的的 github 和公司的 gitlab。折騰了好久,終於找到了一個說明清晰的文章,我嘗試着翻譯一下。git
原文連接 Multiple SSH keys for different accounts on Github or Gitlabgithub
$ ssh-keygen -t rsa -C "your_name@home_email.com"
複製代碼
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user_name/.ssh/id_rsa):
複製代碼
你能夠本身取個名字,用以標識不一樣的帳號,好比 id_rsa_home。 也能夠創建一個單路的文件夾來存放, 好比:/home/user_name/.ssh/home/id_rsa 。你也能夠改爲別的路徑。輸入完成後,繼續 enter,會提示設置短語(passphrase),這個我偷懶就直接 enter 了,沒有設置短語。shell
$ cd ~/.ssh/
$ touch config
$ nano config
複製代碼
添加如下內容,都是固定格式,只須要更改 IdentifyFile 爲對應的文件名或者路徑就能夠了緩存
# Home account
Host home.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_home
# Company account
Host company.github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company
複製代碼
而後刪除緩存的 keybash
$ ssh-add -D
複製代碼
若是提示一下內容ssh
Could not open a connection to your authentication agent.
複製代碼
你須要啓動 ssh-agentide
eval `ssh-agent -s`
複製代碼
從新執行上一條命令,而後能夠經過如下命令檢查你的配置gitlab
$ ssh-add -l
2048 d4:e0:39:e1:bf:6f:e3:26:14:6b:26:73:4e:b4:53:83 /home/user/.ssh/id_rsa_home (RSA)
2048 7a:32:06:3f:3d:6c:f4:a1:d4:65:13:64:a4:ed:1d:63 /home/mateusz/.ssh/id_rsa_company (RSA)
複製代碼
若是什麼都沒輸出,你須要執行如下命令(將後面的路徑更改成對應的路徑)測試
ssh-add ~/.ssh/id_rsa_company
ssh-add ~/.ssh/id_rsa_home
複製代碼
最後,你能夠愉快的測試你的 ssh-key 可否正常鏈接ui
$ ssh -T git@home.github.com
Hi home_user! You've successfully authenticated, but GitHub does not provide shell access. $ ssh -T git@work.github.com Hi company_user! You've successfully authenticated, but GitHub does not provide shell access.
複製代碼
我我的就輸入這種狀況,公司用的 gitlab,同時我要配置我本身的 github。同上面的配置文件,主要是修改了 Host 配置項
# GITLAB
Host gitlab.company_url.com
HostName gitlab.company_url.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company
# GITHUB
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_home
複製代碼
而後能夠測試下
$ ssh -T git@gitlab.company_url.com
Welcome to GitLab, CompanyUser!
$ ssh -T git@github.com
Hi home_user! You've successfully authenticated, but GitHub does not provide shell access. 複製代碼