ssh-keyscan - 複数のホストの公開 SSH ホスト鍵の収集
ssh-keyscan [-v46] [-p port] [-T timeout] [-t type] [-f file] [-] [host... | addrlist namelist] [...]
ssh-keyscan は、複数のホストの公開 SSH ホスト鍵を収集するためのユーティリティーです。このユーティリティーは、ssh_known_hosts ファイルの構築および検証を支援するように設計されました。ssh-keyscan は、シェルや Perl スクリプトでの使用に適した最小のインタフェースを提供します。ssh-keyscan の出力は、標準出力にリダイレクトされます。
ssh-keyscan は、非ブロックソケット入出力を使用してできるだけ多くのホストに並列に接続するため、非常に効率的です。一部のホストが停止しているか、または SSH を実行していない場合でも、1,000 のホストから成るドメインからの鍵を数十秒で収集できます。走査のために、走査されているマシンへのログインアクセスも、走査プロセスでの暗号化も必要ありません。
入力形式:
1.2.3.4,1.2.4.4 name.my.domain,name,n.my.domain,n,1.2.3.4,1.2.4.4
rsa1 鍵の出力形式:
host-or-namelist bits exponent modulus
rsa および dsa 鍵の出力形式。ここで、keytype は ssh-rsa または ssh-dsa のどちらかです。
host-or-namelist keytype base64-encoded-key
サポートしているオプションは、次のとおりです。
このファイルからホストまたはアドレスリストと名前リストのペアを読み取ります (1 行に 1 つ)。ファイル名の代わりに - を指定した場合、ssh-keyscan は、ホストまたはアドレスリストと名前リストのペアを標準入力から読み取ります。
リモートホスト上の接続先のポート。
接続試行のタイムアウトを設定します。ホストへの接続が開始されてから、またはそのホストから任意のデータが最後に読み取られてから timeout 秒が経過すると、その接続は閉じられ、対象のホストは使用不可であると見なされます。timeout のデフォルトは 5 秒です。
走査されるホストから取得する鍵のタイプを指定します。type の指定可能な値は、プロトコルバージョン 1 の場合は rsa1、プロトコルバージョン 2 の場合は rsa または dsa です。複数の値はコンマで区切って指定します。デフォルトは rsa1 です。
詳細表示モードを指定します。進捗に関するデバッグメッセージを表示します。
強制的に IPv4 アドレスのみを使用します。
強制的に IPv6 アドレスのみを使用します。
ssh_known_hosts ファイルが、鍵を検証せずに ssh-keyscan を使用して構築されている場合、ユーザーは中間者攻撃に対して脆弱です。セキュリティーモデルでこのようなリスクが許可されている場合、ssh-keyscan は、改ざんされた鍵ファイルや、ssh_known_hosts ファイルが作成されたあとに開始された「man-in-the-middle attack」を検出するのに役立ちます。
次の例では、マシン hostname の rsa1 ホスト鍵を表示します。
$ ssh-keyscan hostname使用例 2 すべてのホストの検索
次のコマンドは、ソートされたファイル ssh_known_hosts 内の鍵とは異なる鍵や新しい鍵を含むファイル ssh_hosts からすべてのホストを検索します。
$ ssh-keyscan -t rsa,dsa -f ssh_hosts | \ sort -u - ssh_known_hosts | diff ssh_known_hosts -
公開 SSH ホスト鍵のリストが含まれます。
次の終了ステータスが返されます。
使用方法のエラーはありません。ssh-keyscan が、指定されたホストのうちの 1 つ、それ以上、またはすべての走査に成功したか失敗したかは明確ではありません。
使用方法のエラー。
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
ssh(1), sshd(1M), attributes(5)
David Mazieres が最初のバージョンを記述し、Wayne Davison がプロトコルバージョン 2 のサポートを追加しました。
サーバーがバージョン 2.9 よりも古い場合、ssh—keyscan はスキャンするすべてのマシンのコンソールに次のメッセージを生成します:
Connection closed by remote host
これは、ssh-keyscan が ssh ポートへの接続を開いて公開鍵を読み取り、その鍵を取得するとすぐに接続を解除するためです。