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/4/17 (for 3.6.1p1)

当マニュアルページは氏のご好意により FreeBSD 向けに修正を加えて FreeBSD 日本語マニュアルに収録させていただいています。 翻訳についてのご意見、ご指摘がありましたら FreeBSD jpman プロジェクト <man-jp@jp.FreeBSD.org> または新山氏 (yusuke at cs . nyu . edu) までお送りください。