支援的金鑰類型
除非你的環境有什麼理由不准,否則就用 ed25519。
ssh-keygen -t ed25519 -C "you@example.com"
它沒有任何會設錯的參數,產生的公開金鑰短到一眼就看得完,而且 6.5 以後的每一版 OpenSSH 都支援它。只有在你有理由的時候,才去動別的演算法。
接受的類型
公開金鑰的第一個欄位必須是下列其中之一,而且拼法完全一致,才會被接受:
| 類型 | 產生方式 | 說明 |
|---|---|---|
ssh-ed25519 | ssh-keygen -t ed25519 | 建議使用 |
ssh-rsa | ssh-keygen -t rsa -b 4096 | 與舊工具的相容性最廣,但金鑰大得多 |
ecdsa-sha2-nistp256 | ssh-keygen -t ecdsa -b 256 | NIST P-256 |
ecdsa-sha2-nistp384 | ssh-keygen -t ecdsa -b 384 | NIST P-384 |
ecdsa-sha2-nistp521 | ssh-keygen -t ecdsa -b 521 | NIST P-521 |
sk-ssh-ed25519@openssh.com | ssh-keygen -t ed25519-sk | 硬體安全金鑰;需要 OpenSSH 8.2 或更新版本,而且連線時必須插著權杖 |
其他任何東西在你新增時都會被拒絕,回傳 INVALID_SSH_KEY。
不接受的類型
| 你可能會貼上的東西 | 為什麼會失敗 |
|---|---|
ssh-dss(DSA) | 不在清單上;早就淘汰,現行的 OpenSSH 也已經拿掉 |
sk-ecdsa-sha2-nistp256@openssh.com | ECDSA 的安全金鑰變體不在清單上 — 請改用 ed25519-sk |
憑證,例如 ssh-ed25519-cert-v01@openssh.com | Superheat 收的是純公開金鑰,不是憑證 |
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 指紋,也就是舊的冒號分隔十六進位格式,整個產品裡都沒有用到。
該怎麼挑
ed25519 | ssh-rsa | ecdsa | |
|---|---|---|---|
| 公開金鑰長度 | 約 80 個字元 | 4096 位元時約 720 個字元 | P-256 為 160 個字元,P-521 為 252 個 |
| 你得自己決定的事 | 沒有 | 金鑰長度 | 曲線 |
| 從哪一版 OpenSSH 開始支援 | 6.5 | 2.0 | 5.7 |
| 什麼時候挑它 | 一律優先,就當預設 | 你必須跟早於 ed25519 的舊工具互通 | 政策要求使用 NIST 曲線 |
如果你要用 ssh-rsa,至少產生 3072 位元。Superheat 不會拒絕比較短的 RSA 金鑰,但短的 RSA 金鑰很弱,而且現代用戶端也越來越常拒絕它們。
準備好挑一把了嗎?新增金鑰。