根據環境需求設定多組 SSH Keys

前言

當我們使用同一台電腦進行不同專案、服務的工作時,很可能會需要使用不同的 SSH key。
例如,需要分開公司用專案與用於個人專案的 ssh keys,有效的管理這些 keys 不僅可以保護資料,也可以讓環境的切換更加方便

產生 SSH keys

1
ssh-keygen

系統會提示輸入一個文件路徑來保存 SSH key,可以根據服務建立分開建立不同的路徑

為不同服務設定不同的 SSH keys

~/.ssh/config

可以透過 config 來進行設定
為每個服務、連線進行設定,指定對應使用的 SSH key
可以簡化每次進行連線的過程

範例

1
2
3
4
5
6
7
8
9
10
11
12
# GitHub
Host github.com
HostName github.com
IdentitiesOnly yes
IdentityFile ~/.ssh/github/id_rsa

# GitLab
Host my-gitlab-server
HostName gitlab.my-gitlab-server.com
IdentitiesOnly yes
IdentityFile ~/.ssh/my-gitlab/id_rsa

  • 對於 GitHub,定義了一個 Host github.com,並指定了用於 GitHub 的 key github/id_rsa
  • 對於 GitLab,定義了一個 alias my-gitlab,這樣就可以通過簡單地輸入 ssh my-gitlab 來連線到指定的 gitlab server,並且使用 my-gitlab/id_rsa key。

總結

利用 SSH config 來有效管理這些 keys,這讓我們在不同專案和服務間的切換變得更加輕鬆

Reference

https://www.manusobles.com/posts/setup-multiple-ssh-keys-windows
https://connkat.medium.com/setting-up-multiple-ssh-keys-on-one-computer-75f068d972d9
https://stackoverflow.com/questions/2419566/best-way-to-use-multiple-ssh-private-keys-on-one-client