
在ssh
伺服器和用戶端身份驗證中,金鑰指紋以不同的方式呈現,甚至使用相同的命令ssh-keygen -lf
(在不同的主機中或關於不同的金鑰)。
代表1:
$ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:3RE3UrGaTAec8H4YnZG7JTlfXpKvl89iexdqzLCyffY root@hostname1 (ED25519)
代表2:
$ ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
d0:21:3e:ec:52:ff:19:a9:e7:71:b5:7f:63:23:57:f7
(範例來自這一頁)
代表3:
AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHVo5+sYnRQxerJjG/DmUzQFso+CGzcnGT/SDa457qQqh6WIquvWOIXIY5gNPZoOByAoriK+WRxgTT39hYFmpXE=
從
$ ssh-keygen -H -F hostname2
|1|/DmY6Hm8TdZogykndJOUacp2NaM=|uM+t3vLw3KRySPUeXNqBLCxaGtY= ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHVo5+sYnRQxerJjG/DmUzQFso+CGzcnGT/SDa457qQqh6WIquvWOIXIY5gNPZoOByAoriK+WRxgTT39hYFmpXE=
.ssh/known_hosts
這是文件中對應 的行hostname2
。
它們之間有什麼區別?並且,如果它們是等價的,如何從其他表示中獲得每個表示?
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017
表示 1 和 3 是在 Ubuntu 18.04 上使用獲得的。
答案1
舊版的ssh-keygen
OpenSSH 的實用程式僅顯示 MD5 雜湊值;實用程式現在預設顯示 SHA256 雜湊值,儘管您仍然可以使用以下選項選擇 MD5 雜湊值-E
:
user@host:~/.ssh$ ssh-keygen -E md5 -l -f samplekey
2048 MD5:e6:1f:73:0f:14:cb:9a:71:2f:3b:31:b7:3f:58:1c:52 user@host (RSA)
user@host:~/.ssh$ ssh-keygen -E sha256 -l -f samplekey
2048 SHA256:Oyt9H15ZBmITbhljpSiE/BLreo/+j+6lsC3gClGI97U user@host (RSA)
user@host:~/.ssh$ ssh-keygen -B -l -f samplekey
2048 xomiz-lozad-ruzin-lasuz-vibic-fydar-hecoh-mapuv-vytus-futah-maxox user@host (RSA)
此外,您可以-v
在 MD5 或 SHA256 雜湊值上新增(視覺)標誌,以取得除了字母數字雜湊值之外的 ascii-art 比較圖像:
user@host:~/.ssh$ ssh-keygen -E sha256 -l -v -f samplekey
2048 SHA256:Oyt9H15ZBmITbhljpSiE/BLreo/+j+6lsC3gClGI97U user@host (RSA)
+---[RSA 2048]----+
| . .. =.. |
|.. +. + * |
|o o .+. . O . |
| o . .o... o o . |
|. ..E.S o|
| . . . . + |
|. . o..o . . o |
| . o +=.*.. o |
| .. o+BXo..o |
+----[SHA256]-----+
user@host:~/.ssh$
您的第三種表示形式不是指紋,而是採用 base-64 編碼的公鑰,因為它將儲存在檔案中samplekey.pub
或儲存known_hosts
在接受該金鑰的系統上的檔案中。
無法從哈希值中確定密鑰;若要從金鑰取得雜湊值,請使用該ssh-keygen
實用程式及其預設選項,或使用-E
、-B
和/或-v
選項來取得您喜歡的輸出樣式。
要取得檔案中金鑰的指紋known_hosts
(而不是原始公鑰檔案中的指紋,如上面的範例所示),您可以將包含金鑰類型和金鑰的字串直接透過管道傳輸到ssh-keygen
:
$ echo "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHVo5+sYnRQxerJjG/DmUzQFso+CGzcnGT/SDa457qQqh6WIquvWOIXIY5gNPZoOByAoriK+WRxgTT39hYFmpXE=" | ssh-keygen -l -f -
256 SHA256:wOxOBgRQp1qQcnTIjgmE/GB8+3fm8ahyDXuL/2GzgIo no comment (ECDSA)