SSHサーバーキーフィンガープリントのインポート

SSHサーバーキーフィンガープリントのインポート

どのような方法がありますか?プログラム的にSSHサーバーキーフィンガープリントのインポート確認は不要それに?

試しているがssh -v user@host false 2>&1 | grep "Server host key"キーベースの認証が設定されていない場合は、パスワードを待っている間停止します。

答え1

ssh-keyscan合計を組み合わせてこれを実行できますssh-keygen

$ file=$(mktemp)
$ ssh-keyscan host > $file 2> /dev/null
$ ssh-keygen -l -f $file
521 de:ad:be:ef:de:ad:be:ef:de:ad:be:ef:de:ad:be:ef host (ECDSA)
4096 8b:ad:f0:0d:8b:ad:f0:0d:8b:ad:f0:0d:8b:ad:f0:0d host (RSA)
$ rm $file

編集する:OpenSSH 7.2以降、このオネライナは機能します。

ssh-keyscan host | ssh-keygen -lf -

(@mykhalのクレジット)

答え2

私は最近これを自分で行う必要があるので、それを行う方法を説明する答えを追加する必要があると思いました(次のバージョンを使用)。OpenSSH 7.2以降)1行でプロセス置換を使用する:

ssh-keygen -lf <(ssh-keyscan localhost 2>/dev/null)

localhostここではホスト名に変更してください)


次のテキストは、これらのコマンドがどのように機能するかを説明し、OpenSSHユーティリティの以前のバージョンと最新バージョンの間のいくつかの動作の違いを強調します。

公開ホスト鍵の取得

このssh-keyscanコマンドは、ユーザーがSSHサーバーに認証することなく公開ホスト鍵を取得できるように開発されました。マニュアルページから:

ssh-keyscan複数のホストの公開SSHホストキーを収集するユーティリティです。ファイルの構築と確認に役立つように設計されています ssh_known_hosts

キータイプ

インポートするキーの種類を指定するには、このオプションを使用します-t

  • rsa1(廃止予定のSSHプロトコルバージョン1)
  • rsa
  • dsa
  • ecdsa(OpenSSH 最新バージョン)
  • ed25519(OpenSSH 最新バージョン)

最新のOpenSSHバージョンでは基本インポートするキーの種類はrsa (バージョン5.1から)、ecdsa(バージョン6.0から)、ed25519(バージョン6.7から)です。

そして旧バージョンssh-keyscanOpenSSHバージョン5.1以前)、 基本キータイプは使用されなくなったためrsa1(SSHプロトコル1)、キータイプを明示的に指定する必要があります。

ssh-keyscan -t rsa,dsa hostname

Base64キーの指紋ハッシュを取得する

ssh-keyscanSSHサーバーのホストキーを印刷します。Base64エンコーディング 滞在。これを指紋ハッシュに変換するには、ssh-keygenこのユーティリティとその-lオプションを使用して、指定された公開鍵の指紋を印刷できます。

Bash、Zsh(またはKornシェル)を使用する場合、プロセスの交換便利なシングルライナーとして使用できます。

ssh-keygen -lf <(ssh-keyscan hostname 2>/dev/null)

ノート:OpenSSH 7.2より前のバージョンでは、ファイル読み取り機能は ssh-keygenNamed Pipe(FIFO)をうまく処理できないため、この方法が通らず一時ファイルが必要でした。

ハッシュアルゴリズム

最新版ssh-keygen印刷版SHA256キーの指紋ハッシュです。得るためにMD5サーバーキーフィンガープリントのハッシュ値(以前の動作)。この-E オプションを使用してハッシュアルゴリズムを指定できます。

ssh-keygen -E md5 -lf <(ssh-keyscan hostname 2>/dev/null)

パイプの使用

dashたとえば、プロセス交換機能を持たないPOSIXシェルを使用すると、一時ファイルを使用する他のソリューションが機能します。ただし、最新バージョンのOpenSSH(7.2以降)では、ファイル名を標準入力ストリームとしてssh-keygen受け入れ、単一行パイプコマンドを受け入れるので、単純なパイプを使用できます。-

ssh-keyscan hostname 2>/dev/null | ssh-keygen -E md5 -lf -

答え3

nmapこの機能はスクリプトを使用してssh-hostkey提供されます。

キーの16進指紋を返すには、次の手順に従ってください。

$ nmap [SERVER] --script ssh-hostkey

キーの内容を返すには、次の手順に従ってください。

$ nmap [SERVER] --script ssh-hostkey --script-args ssh_hostkey=full

キーの視覚的な泡を返します。

$ nmap [SERVER] --script ssh-hostkey --script-args ssh_hostkey='visual bubble'

上記のすべてのアイテムを返すには、次の手順を実行します。

$ nmap [SERVER] --script ssh-hostkey --script-args ssh_hostkey=all

源泉:nmapドキュメント

答え4

パイジーラショー16進md5ハッシュを使用するキー滞在。

あなたのUbuntu Linuxマシンは次のコマンドを使用します。

ssh-keygen -l -E md5 -f <(ssh-keyscan localhost 2>/dev/null)

注:「localhost」を確認したいコンピュータのIPに置き換えてください。

関連情報