SSH Key 管理
產生 SSH Key
首先輸入指令來產生 key:
ssh-keygen
接著會詢問產生的 SSH key 要存放的位置。
預設為 /home/username/.ssh/id_rsa,如果不同伺服器會使用不同的 key,則改變 key 的位置(例如:/home/username/.ssh/id_rsa_ubuntu)。
id_rsa id_rsa.pub <= 把這個東西打開 known_hosts
cat id_rsa.pub
再把公 key copy 下來。
參考文章
macOS:不用一直輸入 passphrase
適用情境:你用 git pull、git push 等指令時,Terminal 一直問:
Enter passphrase for key '/Users/你的帳號/.ssh/id_ed25519_xxx':
這代表私鑰有設 passphrase(這是好事,丟了 key 別人也不能直接用),但 macOS 預設不會把 passphrase 長期記住,重開機或新開 session 後又會再問一次。
解法是把 passphrase 存進 Apple Keychain,之後由系統自動解鎖,不必每次手動輸入。
第一步:設定 ~/.ssh/config
編輯(或新建)~/.ssh/config,在檔案最上方加入:
Host *
AddKeysToAgent yes
UseKeychain yes
| 選項 | 作用 |
|---|---|
UseKeychain yes | 告訴 SSH 從 macOS Keychain 讀取 / 儲存 passphrase |
AddKeysToAgent yes | 第一次使用時自動把 key 加進 ssh-agent |
tip
Host * 這段建議放在檔案最上面。SSH 由上往下讀取,較具體的 Host 規則通常寫在後面覆寫。
若你會把同一份 config 同步到 Linux,Linux 不認識 UseKeychain,可在前面加:
Host *
IgnoreUnknown UseKeychain,AddKeysToAgent
AddKeysToAgent yes
UseKeychain yes
第二步:把 key 存進 Keychain(只需做一次)
對每一把有 passphrase 的私鑰執行(macOS Monterey 12+):
ssh-add --apple-use-keychain ~/.ssh/id_ed25519_xxx
輸入最後一次 passphrase。成功後,macOS 會把 passphrase 存進 Keychain;之後 git pull / git push / ssh 就不會再一直問。
多把 key 就各執行一次:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519_personal
ssh-add --apple-use-keychain ~/.ssh/id_ed25519_company
caution
請使用系統內建的 /usr/bin/ssh-add。若你用 Homebrew 安裝了 OpenSSH,ssh-add 可能指向 Homebrew 版本,不支援 --apple-use-keychain。不確定時用完整路徑:
/usr/bin/ssh-add --apple-use-keychain ~/.ssh/id_ed25519_xxx