GNU/Linux >> Linux の 問題 >  >> Linux

サーバーの ECDSA キー フィンガープリントを確認するには、どのコマンドを使用すればよいですか?

使用するコマンド

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

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

    -l :指定された公開鍵ファイルのフィンガープリントを表示します。

    -v :ビジュアル (アスキーアート)

    -f :ファイル

  • リモート サーバーの公開ホスト キーのアスキー アートを表示します (ssh 経由で接続するクライアント側で行います):

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

    -o :オプション

    visualhostkey :ビジュアル (アスキーアート)

    指紋ハッシュ :使用するハッシュアルゴリズム

ホスト/サーバーの信頼性を確認する方法

まず、1. はサーバー ( ssh 経由で接続するサーバー) でローカルに実行されます。最初の ascii-art が表示されます。印刷するか、写真を撮ってください。

次に、2. は最初の SSH 接続で実行されます。 2 番目の ascii-art が表示されます。 ascii-art が同じであれば、yes と答えることができます 「信頼できますか?」 質問 (例: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 と共に) 表示され、このフィンガープリントを認識するか認識しないかに応じて、「はい」または「いいえ」と答える必要があります (このフィンガープリントは、ホストの公開鍵のイメージ/ハッシュです)。サーバ)。 「はい」と答えた場合、サーバーのパブリック キー (フィンガープリントではありません) がファイル ~/.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

これにより、クライアントで見たエラーと一致する形式で文字列が出力されます。


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

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/known_hosts に追加した行です テスト用に localhost からの ssh リクエストを承認するためのファイル (主に、ssh を使用する gitolite 用)。

Daniel Bö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

Linux
  1. ssh-keygen コマンドを使用してパスワードなしの ssh を構成する方法

  2. Linux で ssh-keygen コマンドを使用する方法

  3. Bashでの$#の使用は何ですか

  1. Linuxターミナルを使用して、コンピューターにあるファイルを確認します

  2. Linuxgrepコマンドの使用方法

  3. useradd コマンドでオプション -o を使用するとは何ですか?

  1. Linuxでhistoryコマンドを使用する方法

  2. Linuxの履歴コマンドの使用方法

  3. basenameコマンドの使用方法は?