キー指紋の複数の表現

キー指紋の複数の表現

サーバー認証とクライアント認証では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

それらの違いは何でしょうか? また、それらが同等である場合、他の表現からそれぞれの表現を取得するにはどうすればよいでしょうか?


表現 1 と 3 は、OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017Ubuntu 18.04 を使用して取得されました。

答え1

古いバージョンのssh-keygenOpenSSHのユーティリティは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)

さらに、-vMD5 または SHA256 ハッシュのいずれかに (visual) フラグを追加して、英数字ハッシュに加えて ASCII アートの比較画像を取得することもできます。

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$

samplekey.pub3 番目の表現は指紋ではなく、base-64 でエンコードされた公開キーであり、ファイル内または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)

関連情報