SSH-KEYSCAN(1)

名前
ssh-keyscan - ssh 公開鍵を収集する

書式
ssh-keyscan [-v46] [-p ポート番号] [-T タイムアウト秒数] [-t 鍵の種類] [-f ファイル名] [ホスト名 | アドレスリスト ホスト名リスト] [...]

説明
ssh-keyscan は複数のホストから ssh 用のホスト公開鍵を収集するための ユーティリティです。これは ssh_known_hosts ファイルを構築し、検証するのに役立つよう作られています。 ssh-keyscan はシェルスクリプトあるいは perl スクリプトから使うのに適した、 最小限のインターフェイスを備えています。

ssh-keyscan はノンブロッキング ソケット I/O を使い、なるべく多くのホストに 並列にアクセスします。そのためこれは非常に効率的です。 1000台ほどのホストから なるドメインの鍵も数十秒で集めてしまいます、たとえいくつかのホストで ssh が走っていなかったり、ホストがダウンしていたりしても、です。 スキャンのために当該マシンにログインする必要はありません。また、 スキャンするときに暗号を用いる必要もありません。

オプションは以下のとおりです:

-p ポート番号
    接続するリモートホスト上のポートを指定します。

-T  接続要求がタイムアウトするまでの秒数を指定します。 あるホストに接続を試みてから、あるいは最後にそのホストから何か 受信してから timeout 秒が経過するとその接続は閉じられ、問題のホストは使用不能として 認識されます。デフォルトでは 5秒です。

-t 鍵の種類
    ホストから取得する鍵の種類を指定します。 とりうる値は、プロトコル バージョン 1 の “rsa1” と、プロトコル バージョン 2 の “rsa” あるいは “dsa” です。 複数の値を指定するときは、カンマで区切ってください。 デフォルトではこれは “rsa1” になっています。

-f ファイル名
    このファイルから、ホスト名あるいは アドレスリスト ホスト名リスト の組を読み込みます。書式は 1行1項目です。引数として - が指定された場合、 ssh-keyscan は標準入力からホスト名あるいは アドレスリスト ホスト名リスト の組を読み込みます。

-v  冗長表示モード。 ssh-keyscan が進行中のデバッグメッセージを表示するようにします。

-4  ssh-keyscan が IPv4 アドレスのみを使うよう強制します。

-6  ssh-keyscan が IPv6 アドレスのみを使うよう強制します。

セキュリティ
ssh-keyscan をつかって、鍵を検証せずに ssh_known_hosts ファイルを構築した場合、 (なりすまし) 攻撃に対して無防備になります。 いっぽう、お使いのセキュリティモデルがそのような危険を はらんでいる場合、一度こちらの ssh_known_hosts を作ってしまえば、 ssh-keyscan はそれ以後の、改竄された鍵ファイルや man in the middle (なりすまし) 攻撃を検知するのに使えます。

関連ファイル
入力形式:

    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 鍵の出力形式:

    ホストあるいはホスト名のリスト ビット数 べき指数 係数

rsa および dsa 鍵の出力形式:

    ホストあるいはホスト名のリスト 鍵の種類 base64エンコードされた鍵

keytype の値は “ssh-rsa” あるいは “ssh-dss” のどちらかです。

/etc/ssh/ssh_known_hosts

使用例

hostname で指定されるマシンの rsa1 ホスト鍵を表示する:

    $ ssh-keyscan hostname

ファイル ssh_hosts にあるホストのうち、 新しいホスト、あるいはソートされた ssh_known_hosts ファイルにあるものと鍵が違っているホストを見つける:

    $ ssh-keyscan -t rsa,dsa -f ssh_hosts | \
    	sort -u - ssh_known_hosts | diff ssh_known_hosts -

関連項目
ssh(1), sshd(8)

作者
David Mazieres <dm@lcs.mit.edu> が最初のバージョンを書き、 Wayne Davison <wayned@users.sourceforge.net> がプロトコル バージョン 2 のサポートを追加しました。

バグ
サーバ側のバージョンが 2.9 より古いと、 このプログラムはスキャンしたすべてのマシンのコンソール上に "Connection closed by remote host" のメッセージを残します。 これは、このプログラムが ssh 用のポートに接続したあと、 公開鍵を読みこんですぐに接続を切ってしまうためです。

日本語訳
新山 祐介 (yusuke at cs . nyu . edu) 2003/9/20 (for 3.7.1p2)