web-dev-qa-db-ja.com

サーバーのECDSAキーフィンガープリントが何であるかを確認するには、どのコマンドを使用しますか?

RSAキーのフィンガープリントを見る方法についてはGoogle全体で見ていますが、ECDSAフィンガープリントは見ていません。

68
trusktr

待って、見つけた。次のコマンドを実行します。

ssh-keygen -l -f /etc/ssh/ssh_Host_ecdsa_key.pub
105
trusktr

最近の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-keyscanstderr(!)ではなくstdoutに書き込みます。したがって、bashリダイレクト '2>&1'(シェルによって異なる場合があります)

これは、テスト用にlocalhostからのssh要求を許可するために~/.ssh/known_hostsファイルに追加した行です(主に sshを使用するgitolite )。


ダニエルベーマー 確認 コメント内

  • 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
14
VonC

私のシステムでは、デフォルトのSHA256の代わりにMD5キーを指定する必要があります。

ssh-keygen -l -E md5 -f /etc/ssh/ssh_Host_ecdsa_key.pub

これは、クライアントで見たエラーに一致した形式の文字列を出力しました。

7
David Elrod

使用するコマンド

  • サーバーに保存されている公開ホストキーのascii-artを表示します(サーバー側で実行し、ssh経由で接続するもの):

    ssh-keygen -l -v -f /etc/ssh/ssh_Host_ecdsa_key.pub
    

    -l:指定された公開鍵ファイルの指紋を表示します。

    -v:ビジュアル(ascii-art)

    -f:ファイル

  • リモートサーバーの公開ホストキーのascii-artを表示します(クライアント側で行う、ssh経由でFROMから接続するもの):

    ssh -o visualhostkey=yes -o FingerprintHash=md5 <Host_server_to_connect>
    

    -o:オプション

    visualhostkey:visual(ascii-art)

    FingerprintHash:使用するハッシュアルゴ

ホスト/サーバーの信頼性を確認するために行うこと

最初に、1。はサーバー上でローカルに実行されます(sshを介してTOに接続したいもの):最初のascii-artを提供します。印刷するか、写真を撮ります。

第二に、2。は最初のSSH接続で行われます。 2番目のascii-artが表示されます。アスキー・アートが同じであれば、あなたは答えることができますはい「私は信用しますか?」の質問に(すなわち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)? 

その他の説明

最初のコマンドは、入力として指定したファイルの指紋に対応するascii-artを表示します。入力として指定するファイルは、サーバーの公開ホストキーです。クライアントが(初めてだけでなく)接続すると、サーバーは公開ホストキーを送信します。この公開ホストキーは、~/.ssh/known_hostsで検索されます。公開鍵がファイル内にある場合は問題ありません。ホスト(サーバー)がわかっているため、次の手順に進み、ユーザーを認証します(この記事ではユーザー認証については説明しません)。公開鍵がファイルにない場合、クライアントはハッシュアルゴリズムを使用してこの公開ホスト鍵のフィンガープリントを計算します(異なるハッシュアルゴリズムは異なるフィンガープリントを提供します)。以前に計算されたこのフィンガープリントは(対応するオプションが提供されている場合はascii-artとともに)表示され、このフィンガープリントを認識するかどうかに応じてyesまたはnoと答える必要があります(このフィンガープリントは、公開ホストキーの画像/ハッシュですサーバ)。 「はい」と言うと、サーバーの(キーではなく)パブリックキーがファイル~/.ssh/known_hostsに追加されます。

私たちは、あなたこのホスト(サーバー)を信頼しているため~/.ssh/known_hostsは、家あなたの下で(〜)ディレクトリであることに気づくことができますが、別のユーザーはあなたと同じように信用しないことがあります。また、サーバーのホスト公開鍵はユーザーに依存しないため、/etc/ssh/に保存されます。

2番目のコマンドは、指紋および(オプションで与えられたハッシュアルゴに従って)Host_server_to_connectから受信した公開鍵のASCII-技術が表示されます。 sshのみを実行するのと同じですが、視覚的なオプションが増えているため、接続は通常のssh接続と同じ方法で続行されます。

2