RSAキーのフィンガープリントを確認する方法については、Googleのいたるところにありますが、ECDSAのフィンガープリントは確認していません。
4 に答える
待って、見つけた。次のコマンドを実行します。
ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
最近のssh(OpenSSH_6.0p1、OpenSSL 1.0.0j 2012年5月10日)を使用して、次のようにスクリプトを作成しました。
ssh-keyscan -t ecdsa localhost 2>&1 | grep ecdsa
localhost ecdsa-sha2-nistp256 AAAAE2VlongKey...=
ノート:
- sshdがカスタムポートで実行されている場合
-p portNumber
は、コマンドに''を追加しますssh-keyscan
) ssh-keyscan
(!)stderr
ではなく、に書き込むため、リダイレクト' '(シェルによって異なる場合があります)stdout
bash
2>&1
これは、ローカルホストからのテスト(主にsshを使用するgitolite)~/.ssh/known_hosts
に対するssh要求を承認するためにファイルに追加した行です。
DanielBöhmerはコメントで確認しています:
ssh-keyscan
SSHサーバーの完全な公開鍵を提供します- の出力は
ssh-keygen
、公開鍵ファイルの形式とほぼ同じです。
最初の列(IPアドレスまたはホスト名)を削除して保存するかssh-keygen -l
、指紋が表示される場所にパイプします。
ダニエルは次のように付け加えます。
に保存されているすべてのサーバー公開鍵のフィンガープリントを表示します
~/.ssh/know_hosts
。
cut -d' ' -f2- ~/.ssh/known_hosts | while read line; do echo "$line" | ssh-keygen -lf-; done
使用したコマンド
サーバーに保存されているパブリックホストキーのアスキーアートを表示します(サーバー側で実行し、ssh経由で接続するもの):
ssh-keygen -l -v -f /etc/ssh/ssh_host_ecdsa_key.pub
-l:指定された公開鍵ファイルのフィンガープリントを表示します。
-v:ビジュアル(アスキーアート)
-f:ファイル
リモートサーバーのパブリックホストキーのアスキーアートを表示します(クライアント側で実行され、ssh経由でFROMに接続します)。
ssh -o visualhostkey=yes -o FingerprintHash=md5 <host_server_to_connect>
-o:オプション
visualhostkey:ビジュアル(アスキーアート)
FingerprintHash:使用するハッシュアルゴリズム
ホスト/サーバーの信頼性を確認するために何をすべきか
まず、1。サーバー(ssh経由で接続するサーバー)でローカルに実行します。これにより、最初のアスキーアートが提供されます。印刷するか、写真を撮ります。
次に、2。最初のSSH接続で実行されます。2番目のアスキーアートが表示されます。アスキーアートが同じであれば、「私は信頼しますか?」に「はい」と答えることができます。質問(すなわち)。Are you sure you want to continue connecting (yes/no)
例
- サーバ側
$ ssh-keygen -l -v -f /etc/ssh/ssh_host_ecdsa_key.pub
256 2e:a6:b3:27:14:12:0b:79:df:9a:7f:bd:4d:b1:e0:b6 (ECDSA)
+--[ECDSA 256]---+
| . |
|o o |
| o + . |
| o o . |
| . + S . . |
| + . . . o |
| . .o ..o o |
| ooo....+ |
| o= . E.. |
+-----------------+
- クライアント側
$ ssh -o visualhostkey=yes -o FingerprintHash=md5 192.168.12.211
The authenticity of host '192.168.12.211 (192.168.12.211)' can't be established.
ECDSA key fingerprint is MD5:2e:a6:b3:27:14:12:0b:79:df:9a:7f:bd:4d:b1:e0:b6.
+---[ECDSA 256]---+
| . |
|o o |
| o + . |
| o o . |
| . + S . . |
| + . . . o |
| . .o ..o o |
| ooo....+ |
| o= . E.. |
+------[MD5]------+
Are you sure you want to continue connecting (yes/no)?
もう少し説明
最初のコマンドは、入力として指定したファイルのフィンガープリントに対応するアスキーアートを表示します。入力として指定するファイルは、サーバーの公開ホストキーです。クライアントが(初めてだけでなく)接続すると、サーバーは公開ホストキーを送信します。この公開ホストキーはで検索されます~/.ssh/known_hosts
。公開鍵がファイルに含まれている場合は問題ありません。ホスト(サーバー)がわかっているので、次の手順に進んでユーザーを認証します(ユーザー認証についてはこの投稿では説明していません)。公開鍵がファイルにない場合、クライアントはハッシュアルゴリズムを使用してこの公開ホスト鍵のフィンガープリントを計算します(異なるハッシュアルゴリズムは異なるフィンガープリントを提供します)。以前に計算されたこのフィンガープリントが表示され(対応するオプションが提供されている場合はアスキーアートとともに)、このフィンガープリントを認識するかどうかに応じて、「はい」または「いいえ」と答える必要があります(このフィンガープリントは、サーバ)。「はい」と答えると、サーバーのバブルキー(指紋ではない)がファイルに追加されます~/.ssh/known_hosts
。
このホスト(サーバー)を~/.ssh/known_hosts
信頼しているため、ホーム(〜)ディレクトリの下にあることがわかりますが、別のユーザーがあなたと同じものを信頼していない可能性があります。また、サーバーのホスト公開鍵はユーザーに依存しないため、に格納されます。/etc/ssh/
2番目のコマンドは、 host_server_to_connectから受信した公開鍵のフィンガープリントとアスキーアートを表示します(オプションで指定されたハッシュアルゴリズムに従って)。これはsshのみを実行するのと同じですが、より多くの視覚的なオプションがあるため、接続は通常のssh接続と同じ方法で続行されます。
私のシステムでは、デフォルトのSHA256の代わりにMD5キーを指定する必要があります。
ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ecdsa_key.pub
これにより、クライアントで見たエラーと一致する形式で文字列が出力されました。