跳至主要內容

支援的金鑰類型

除非你的環境有什麼理由不准,否則就用 ed25519。

ssh-keygen -t ed25519 -C "you@example.com"

它沒有任何會設錯的參數,產生的公開金鑰短到一眼就看得完,而且 6.5 以後的每一版 OpenSSH 都支援它。只有在你有理由的時候,才去動別的演算法。

接受的類型

公開金鑰的第一個欄位必須是下列其中之一,而且拼法完全一致,才會被接受:

類型產生方式說明
ssh-ed25519ssh-keygen -t ed25519建議使用
ssh-rsassh-keygen -t rsa -b 4096與舊工具的相容性最廣,但金鑰大得多
ecdsa-sha2-nistp256ssh-keygen -t ecdsa -b 256NIST P-256
ecdsa-sha2-nistp384ssh-keygen -t ecdsa -b 384NIST P-384
ecdsa-sha2-nistp521ssh-keygen -t ecdsa -b 521NIST P-521
sk-ssh-ed25519@openssh.comssh-keygen -t ed25519-sk硬體安全金鑰;需要 OpenSSH 8.2 或更新版本,而且連線時必須插著權杖

其他任何東西在你新增時都會被拒絕,回傳 INVALID_SSH_KEY

不接受的類型

你可能會貼上的東西為什麼會失敗
ssh-dss(DSA)不在清單上;早就淘汰,現行的 OpenSSH 也已經拿掉
sk-ecdsa-sha2-nistp256@openssh.comECDSA 的安全金鑰變體不在清單上 — 請改用 ed25519-sk
憑證,例如 ssh-ed25519-cert-v01@openssh.comSuperheat 收的是純公開金鑰,不是憑證
PuTTY 的 .ppk 檔案那不是 OpenSSH 公開金鑰;請改從 PuTTYgen 把 OpenSSH 格式的文字複製出來
任何以 -----BEGIN 開頭的東西那是私密金鑰 — 請參閱產生金鑰

格式

一行、兩個欄位,外加一個選填的註解:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ8mQ2sT9vXbN1kR4pLwZ0aYcE7hJ6uD3fGgH5iKmNoP you@example.com
欄位必填檢查什麼
類型必須與接受清單完全相符
金鑰內容以嚴格 base64 解碼,而且不能短到不可能是一把金鑰
註解會跟著金鑰那一行存起來,計算指紋時忽略

結尾的換行會自動幫你去掉。開頭的空白或空行不會 — 主控台表單從貼上內容的第一個字元就開始檢查,並以「That doesn't look like an OpenSSH public key」把它擋下來,所以請從金鑰類型開始貼。金鑰內容中間被插入換行同樣會壞掉:有些編輯器和聊天軟體會在你透過它們貼上時把長行折斷。請用產生金鑰裡的其中一道指令,直接從檔案複製。

指紋

Superheat 會從金鑰內容推導出 SHA256 指紋,顯示在 SSH 金鑰頁面上該金鑰名稱的下方:

SHA256:Pr6lxPUhwJ7+VHus18B6LLkVm4mFu0L9hn8eqgpOyag

這跟 OpenSSH 算出來的指紋是同一個,所以你可以在本機確認帳號裡放的是你哪一把金鑰:

ssh-keygen -lf ~/.ssh/id_ed25519.pub

指紋同時也是金鑰的身分。同一個帳號下的兩筆項目,不能用不同名稱帶著相同的金鑰內容 — 第二次嘗試會回傳 DUPLICATE_SSH_KEY。MD5 指紋,也就是舊的冒號分隔十六進位格式,整個產品裡都沒有用到。

該怎麼挑

ed25519ssh-rsaecdsa
公開金鑰長度約 80 個字元4096 位元時約 720 個字元P-256 為 160 個字元,P-521 為 252 個
你得自己決定的事沒有金鑰長度曲線
從哪一版 OpenSSH 開始支援6.52.05.7
什麼時候挑它一律優先,就當預設你必須跟早於 ed25519 的舊工具互通政策要求使用 NIST 曲線

如果你要用 ssh-rsa,至少產生 3072 位元。Superheat 不會拒絕比較短的 RSA 金鑰,但短的 RSA 金鑰很弱,而且現代用戶端也越來越常拒絕它們。

準備好挑一把了嗎?新增金鑰