ssh-keygenでsshの鍵を作るときに表示される変なアスキーアートみたいなあれ、なんか出てくるけど何に使うのかと長いこと謎ではあったのよ。なので、調べる。

こいつの正式な名前は、SSH Fingerprint ASCII Visualisationというらしい。opensshでは、randomart imageとか出てくる。
こういうやつ。
+--[RSA 2048]----+
| .oo+ |
| o o++. |
| . =.*oo |
| o O+= |
| + B |
| . = . |
| |
| |
+-----------------+
ssh-keygenするときに、「なんか出てくるな」ということくらいしか気にしていなかった。こんな感じ。自分でkeygenしない人は、見ることすらないか。
% ssh-keygen -t ed25519 -f ./testid_ed25519
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ./testid_ed25519
Your public key has been saved in ./testid_ed25519.pub
The key fingerprint is:
SHA256:ooD+KRjm8tPaE1C20coSRLKYSIOx7/5f1x9ndQuRA9E kinneko@kinnekonom2mba.local
The key's randomart image is:
+--[ED25519 256]--+
|+*o . oo |
|==o + . .E. |
|* = + + |
| oo + o |
|. oo . S . o|
|oo ... . . . +|
|+o.... . . . ..o|
|o+o.+ . . . + |
|..=*oo. . |
+----[SHA256]-----+
既存の鍵から取得するにはこんな感じ。
% ssh-keygen -lv -f ./testid_ed25519
256 SHA256:ooD+KRjm8tPaE1C20coSRLKYSIOx7/5f1x9ndQuRA9E kinneko@kinnekonom2mba.local (ED25519)
+--[ED25519 256]--+
|+*o . oo |
|==o + . .E. |
|* = + + |
| oo + o |
|. oo . S . o|
|oo ... . . . +|
|+o.... . . . ..o|
|o+o.+ . . . + |
|..=*oo. . |
+----[SHA256]-----+
昔はkeygenするときにも出なかったと思うのだけど、いつから出るようになったのかな。
調べてみると、1999年にCrypTEC '99で「ハッシュビジュアライゼーション:現実世界のセキュリティを向上させる新しい手法」として提案された仕様らしい。
opensshが対応したのは、5.1 2008-07-22 からかな。実装されるまで、結構時間がかかったのね。
https://www.openssh.com/txt/release-5.1
鍵のフィンガープリントが、バイナリ形式とか16進文字列とかで人間の可読性が悪いというので、なにかシンボル化したものを使えるようにしたということらしい。
ホストの公開鍵のハッシュキーを可視化したものなので、接続先が同じであれば、同じ絵になるということのようだ。
でも、クライアントから接続するときに、表示されたりはしないよな...
% ssh git@github.com
The authenticity of host 'github.com (20.27.177.113)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
VisualHostKey=yesのオプションを与えるか、~/.ssh/configに「VisualHostKey yes」を書いておくとデフォルトで表示されるようになるらしい。
% ssh git@github.com -o VisualHostKey=yes
The authenticity of host 'github.com (20.27.177.113)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
+--[ED25519 256]--+
| |
| . |
| o |
| o o o . |
| .B S oo |
| =+^ =... |
| oo#o@.o. |
| E+.&.=o |
| ooo.X=. |
+----[SHA256]-----+
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
出たね。
いやぁ、「公開鍵の識別をわかりやすくするための補助的な方法」で「ホスト鍵の確認をより直感的にする試み」とか言われても、雰囲気合ってるかどうかとかなんて覚えてらんないでしょ。無駄な機能だわな...
というわけで、謎は解決した。特に気にしなくてよさそうだ。(接続先のフィンガープリントは確認しようねw)
オリジナル投稿:
SSH Fingerprint ASCII Visualisation|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/8974735

