SSH-KEYSCAN (1)

OpenSSH-7.3p1 日本語マニュアルページ (2016/10/15)


名前

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

書式

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

説明

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

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

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

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

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

-c
当該ホストに対して普通の鍵ではなく証明書を要求します。

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

-H
出力のホスト名および IP アドレスをすべてハッシュします。ssh およびsshd は、これらのハッシュ表現を普通に扱うことができますが、これによって、たとえファイルの内容が見えても識別可能な情報が明らかになることはありません。

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

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

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

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

セキュリティ

ssh-keyscan を使って、鍵を検証せずに ssh_known_hosts ファイルを構築した場合、man in the middle(なりすまし) 攻撃に対して無防備になります。いっぽう、お使いのセキュリティモデルがそのような危険をはらんでいる場合、一度こちらの 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, ECSDA および ED25519 鍵の出力形式:

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

keytype の値は"ecdsa-sha2-nistp256 ,""ecdsa-sha2-nistp384 ,""ecdsa-sha2-nistp521 ,""ssh-ed25519 ,""ssh-dss"あるいは"ssh-rsa"のいずれかです。

/etc/ssh/ssh_known_hosts


使用例

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

$ ssh-keyscan hostname

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

\	sort -u - ssh_known_hosts | diff ssh_known_hosts -

関連項目

ssh (1), sshd (8)

作者

-nosplit
DavidMazieres<Mt dm@lcs.mit.edu>
が最初のバージョンを書き、
WayneDavison<Mt wayned@users.sourceforge.net>
がプロトコル 2 のサポートを追加しました。

バグ

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