どのような方法がありますか?プログラム的に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-keyscan
OpenSSHバージョン5.1以前)、
基本キータイプは使用されなくなったためrsa1
(SSHプロトコル1)、キータイプを明示的に指定する必要があります。
ssh-keyscan -t rsa,dsa hostname
Base64キーの指紋ハッシュを取得する
ssh-keyscan
SSHサーバーのホストキーを印刷します。Base64エンコーディング
滞在。これを指紋ハッシュに変換するには、ssh-keygen
このユーティリティとその-l
オプションを使用して、指定された公開鍵の指紋を印刷できます。
Bash、Zsh(またはKornシェル)を使用する場合、プロセスの交換便利なシングルライナーとして使用できます。
ssh-keygen -lf <(ssh-keyscan hostname 2>/dev/null)
ノート:OpenSSH 7.2より前のバージョンでは、ファイル読み取り機能は
ssh-keygen
Named 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に置き換えてください。