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
(無密碼直接登入成功)

延伸閱讀