在同一臺電腦上使用多個 SSH KEYS (GITHUB OR GITLAB)

1. 前言

不少時候,咱們須要在本身的電腦上配置多個 ssh keys。好比我的的 github 和公司的 gitlab。折騰了好久,終於找到了一個說明清晰的文章,我嘗試着翻譯一下。git

原文連接 Multiple SSH keys for different accounts on Github or Gitlabgithub

2. 多個 github 帳號

  1. 建立 ssh-key,下面這條命令無需贅言
$ ssh-keygen -t rsa -C "your_name@home_email.com"
複製代碼
  1. 輸入命令而後 enter 就行,接下來會出現這樣的提示
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

  1. 建立第二個 ssh-key,重複上面的步驟就能夠了,只是在第 2 步的時候換一個名字或者路徑就能夠了。
  2. 添加配置文件
$ 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.
複製代碼

3. github 和 gitlab

我我的就輸入這種狀況,公司用的 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. 複製代碼
相關文章
相關標籤/搜索