ssh-keygen — 產生 SSH 金鑰對
產生 SSH 公私金鑰對,是設定免密碼 SSH 登入的必要步驟。
語法
ssh-keygen [選項]
常用選項
| 選項 | 說明 | 範例 |
|---|---|---|
-t 類型 |
金鑰類型(ed25519 推薦;rsa 最相容;ecdsa) | ssh-keygen -t ed25519 |
-b N |
RSA 金鑰位元數(預設 3072,建議 4096) | ssh-keygen -t rsa -b 4096 |
-C 注釋 |
金鑰的說明注釋(通常放 email 或主機名稱) | ssh-keygen -C "user@host" |
-f 路徑 |
指定金鑰儲存路徑(預設 ~/.ssh/id_ed25519) | ssh-keygen -f ~/.ssh/my_key |
-N 密碼 |
設定金鑰密語(passphrase),空字串=不設密語 | ssh-keygen -N "" |
-R 主機 |
從 known_hosts 移除指定主機的金鑰 | ssh-keygen -R hostname |
-y |
顯示私鑰對應的公鑰 | ssh-keygen -y -f ~/.ssh/id_ed25519 |
-l |
顯示金鑰的指紋(fingerprint) | ssh-keygen -l -f ~/.ssh/id_ed25519.pub |
使用範例
範例 1:產生 Ed25519 金鑰對(推薦)
使用現代 Ed25519 演算法,安全性高、連線速度快。
$ ssh-keygen -t ed25519 -C "alice@mycomputer"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/alice/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Your identification has been saved in /home/alice/.ssh/id_ed25519
Your public key has been saved in /home/alice/.ssh/id_ed25519.pub
範例 2:產生 RSA 4096 位元金鑰(最大相容性)
舊系統可能只支援 RSA,使用 4096 位元提高安全性。
$ ssh-keygen -t rsa -b 4096 -C "alice@mycomputer"
範例 3:移除過期的已知主機記錄
伺服器重建後 SSH 公鑰改變,用此指令清除舊記錄解除警告。
$ ssh-keygen -R old-server.example.com
# Host old-server.example.com found: line 5
/home/user/.ssh/known_hosts updated.
範例 4:完整的無密碼 SSH 設定流程
三個步驟設定免密碼 SSH 登入。
$ # 步驟 1:產生金鑰對
ssh-keygen -t ed25519 -C "alice@local"
# 步驟 2:複製公鑰到遠端(見 ssh-copy-id)
ssh-copy-id user@server
# 步驟 3:測試
ssh user@server
(無密碼直接登入成功)