OpenSSH-5.6p1 日本語マニュアルページ (2010/08/27)
認証用の鍵を生成、管理、および変換する
ssh-keygen
[-q ]
[-b ビット数 ]
-t 鍵の種類 [-N 新しいパスフレーズ ]
[-C コメント (訳注:SSH1のみ)]
[-f 出力先identityファイル ]
ssh-keygen
-p [-P 古いパスフレーズ ]
[-N 新しいパスフレーズ ]
[-f パスフレーズを変更するidentityファイル ]
ssh-keygen
-i [-m 鍵の形式 ]
[-f 変換するidentityファイル ]
ssh-keygen
-e [-m 鍵の形式 ]
[-f 変換するidentityファイル ]
ssh-keygen
-y [-f identityファイル ]
ssh-keygen
-c [-P パスフレーズ ]
[-C コメント ]
[-f コメントを変更するidentityファイル ]
ssh-keygen
-l [-f 指紋を表示するidentityファイル ]
ssh-keygen
-B [-f ダイジェストを表示するidentityファイル ]
ssh-keygen
-D pkcs11
ssh-keygen
-F ホスト名 [-f known_hostsファイル ]
[-l ]
ssh-keygen
-H [-f known_hostsファイル ]
ssh-keygen
-R ホスト名 [-f known_hostsファイル ]
ssh-keygen
-r ホスト名 [-f 入力するidentityファイル ]
[-g ]
ssh-keygen
-G 出力ファイル [-v ]
[-b ビット数 ]
[-M 使用メモリ量 ]
[-S 開始位置 ]
ssh-keygen
-T 出力ファイル -f 入力ファイル [-v ]
[-a 試行回数 ]
[-W ジェネレータ ]
ssh-keygen
-s CA鍵 -I 証明書の秘密鍵 [-h ]
[-n principal ]
[-O オプション ]
[-V 有効期間 ]
[-z シリアル番号 ]
file
ssh-keygen
-L [-f 入力する鍵ファイル ]
ssh-keygen
はssh (1)
で認証に使う鍵を生成、管理および変換します。ssh-keygen
は SSH プロトコル バージョン 1 で使われる RSA 鍵と、SSH プロトコル バージョン 2 で使われる RSA 鍵および DSA 鍵を生成できます。生成する鍵の種類は-t オプションによって指定できます。この指定がない場合、ssh-keygen
は SSH プロトコル バージョン 2 で使われる RSA 鍵を生成します。
ssh-keygen
は Diffie-Hellman 群交換 (DH-GEX) で使われる群を生成するのにも使用します。詳しくは、係数 (modulus) の生成の項を参照してください。
ふつう、RSA 認証 または DSA 認証で SSH を使いたいユーザは、一度このプログラムを実行すれば~/.ssh/identity、~/.ssh/id_dsaまたは~/.ssh/id_rsaに鍵 (identity ファイル) を作ることができます。また/etc/rcなどで見られるように、システム管理者がホスト鍵を生成するためにこのプログラムを使うこともできます。
通常、このプログラムは鍵を生成したあと、その鍵 (identity) をどのファイルに格納すればよいのか尋ねます。公開鍵は、秘密鍵を含む identityファイルの名前に".pub"をつけた名前のファイルとして格納されます。またこのプログラムはパスフレーズも尋ねてきます。任意の長さの文字列をパスフレーズとして使用することができます。パスフレーズをつけないときには、これは空でもかまいません(ホスト鍵のパスフレーズは必ず空でなければいけません)。パスフレーズはパスワードに似ていますが、パスワードとは違って単語の列や句読点、数値、空白など、好きな文字を含めることができます。よいパスフレーズとは、10〜30 文字程度の長さで、簡単な文章や容易に推測できるものではないことです (英語の散文では 1 文字あたりのエントロピーはわずか 1〜2 ビットしかなく、パスフレーズとしては非常に望ましくありません)。また大文字と小文字が混じっているものがよいでしょう。パスフレーズは-p オプションによって、後から変更することもできます。
失われてしまったパスフレーズをもとに戻すことはできません。もしパスフレーズを忘れてしまったり、なくしてしまったときには、新しい鍵を生成してその公開鍵を別のマシンにコピーしなくてはならないでしょう。
RSA1 鍵 (訳注: SSH1 で使う鍵) の場合、鍵のファイルにはコメントフィールドがあります。これはユーザが鍵を区別するためだけに便宜的に用意されているものです(訳注: SSH2 の鍵にはコメントはありません)。コメントには鍵の用途やその他有用な情報を書いておくことができます。最初に鍵が作られるとき、コメントは"user@host"の形に初期化されますが、-c オプションを使えば変更することができます。
鍵を生成したあと、それを使用可能にするためにどこに置けばよいかは後で説明しています。
オプションには次のようなものがあります:
-a 試行回数 -T コマンドを使うときに、DH-GEX 群の候補をスクリーニングするために何回の素数判定テストをおこなうかを指定します。-B -b ビット数 -C コメント -c -D pkcs11 -s と一緒に使用された場合、このオプションは CA 鍵が PKCS#11 トークン中に格納されていることを指定します。(詳しくは証明書のセクションをごらんください)-e -m オプションで指定された形式で標準出力に表示します。デフォルトの形式は"RFC4716"です。このオプションを使うと、OpenSSH の鍵をいくつかの商用 SSH 実装で使われている形式の鍵に変換できます。-F ホスト名 known_hostsファイルの中から探し、見つかったものを一覧表示します。このオプションはハッシュされたホスト名あるいは IP アドレスを見つけるのに有用です。また、-H オプションと組み合わせてハッシュされた形式の公開鍵を表示するのにも使えます。-f ファイル名 -G 出力ファイル名 -T オプションを使って) 実際の使用前にスクリーニングする必要があります。-g -r コマンドを使って指紋のレコードを表示する際に、Generic DNS 形式を使用します。-H known_hostsファイルをハッシュし、その結果を標準出力に表示します。これはすべてのホスト名および IP アドレスをハッシュされた表現で置き換え、そのファイルを更新します。古いファイルはサフィックス .old がついた名前で保存されます。ssh
およびsshd
は、これらのハッシュ表現を普通に扱うことができますが、これによって、たとえファイルの内容が見えても識別可能な情報が明らかになることはありません。このオプションはすでに存在するハッシュされたホスト名を修正することはしないため、ハッシュされた表現とハッシュされていない表現が混在したファイルに対してこのオプションを適用しても安全です。-h -I 証明書の秘密鍵 -i -m オプションによって指定されます。このオプションを使うと、いくつかの商用 SSH 実装で使われている鍵を OpenSSH で使用できます。デフォルトの形式は、"RFC4716"です。-L -l ssh-keygen
はそれに該当する公開鍵ファイルを探し出してその指紋を表示します。-v オプションがつけられた場合、その鍵の指紋を表現したアスキーアートも表示します。-M メモリ -m 鍵の形式 -i オプション (import) あるいは-e オプション (export) で使われる鍵の形式を指定します。サポートされている形式は:"RFC4716"(RFC 4716/SSH2 の公開鍵あるいは秘密鍵)、"PKCS8"(PEM PKCS8 の公開鍵)あるいは"PEM"(PEM の公開鍵) です。デフォルトの形式は、"RFC4716"になっています。-N 新しいパスフレーズ -n principal -O オプション ユーザ証明書に対して有効なオプション:
~/.ssh/rcの実行を禁止します。(デフォルトでは許可されています)。~/.ssh/rcの実行を許可します。現在のところ、ホスト鍵に対して有効なオプションはありません。
-P パスフレーズ -p -q ssh-keygen
。/etc/rcで新しい鍵をつくるときに使われます。-R ホスト名 known_hostsファイルから、指定されたホスト名 に属する鍵をすべて取り除きます。このオプションはハッシュされたホスト (上記の-H オプションを参照) をファイルから取り除くのに有用です。-r ホスト名 -S 開始点 -s CA鍵 -T 出力ファイル -G オプションで生成された) DH 群交換のための素数候補に対して、安全性の試験をおこないます。-t 鍵の種類 -V 有効期間 例:"+52w1d"(現在から 52週間と 1日間のあいだ有効)"-4w:+4w"(4週間前から4週間後まで有効)"20100101123000:20110101123000"(2010年1月1日 午後12時30分から、2011年1月1日 午後12時30分まで有効)"-1d:20110101"(昨日から2011年1月1日の午前0時まで有効)
-v ssh-keygen
が進行中のデバッグメッセージを表示するようにします。これはモジュロ生成のデバッグ時に役立ちます。複数の-v オプションをつけると出力が増えます。最大は 3 個です。-W ジェネレータ -y -z シリアル番号 ssh-keygen
は、Diffie-Hellman 群交換 (Diffie-Hellman Group Exchange, DH-GEX) のための群を生成するのにも使うことができます。この群を生成するには、2 つの段階をふむ必要があります:まず、素数の候補が生成されます。これは高速ですが、メモリを消費します。つぎにこれらの候補が適切かどうか検査されます (このときは CPU 時間を消費します)。
この素数の生成は-G オプションによっておこなえます。必要な素数の長さは、-b オプションで指定することができます。たとえば:
デフォルトでは、素数の探索は指定された長さの区間でランダムに選ばれた位置から開始されます。この開始位置は-S オプションによって変更することができます。
候補となる素数の集合が生成されたあとは、それらが適切かどうかを検査する必要があります。これは-T オプションを使っておこなえます。この場合、ssh-keygen
は標準入力 (あるいは-f オプションで指定したファイル) から候補を読み込みます。たとえば:
デフォルトでは、候補となる各素数は 100回の素数判定テストにかけられます。この回数は、-a オプションによって変更することができます。DH ジェネレータの値は探索中の素数のために自動的に選ばれます。特定のジェネレータが必要な場合は、-W オプションによって指定することができます。許されるジェネレータの値は 2、3 あるいは 5 です。
最終的にスクリーニングされた DH 群は/etc/moduliにインストールすることができます。注意: このファイルはある範囲のビット長の係数 (modulus) を格納しており、この数は 2つの通信端点間で同じものである必要があります。
ssh-keygen
は、鍵に署名する機能をサポートしています。これによって、ユーザあるいはホスト認証時に使うことのできる証明書を生成することができます。証明書は、以下のものからなっています:公開鍵、なんらかの識別情報、0個以上の principal名(ユーザまたはホスト名)、およびオプションの集合が、認証局 (Certification Authority, CA) の鍵によって電子署名されます。このようにすることで、クライアントやサーバは沢山のユーザ鍵やホスト鍵をすべて信頼しなくても、証明書を検証する際の CA 鍵だけを信頼すればよいことになります。注意: OpenSSH の証明書は、ssl (8)
で使われている X.509 形式の証明書とはまったく異なる、かなりシンプルな形式になっています。
ssh-keygen
では、2種類の証明書をサポートしています:ユーザ証明書とホスト証明書です。ユーザ証明書は、サーバに対してユーザを認証します。これに対してホスト証明書は、サーバに対してホストを認証します。ユーザ証明書を生成する方法:
生成された証明書は、/path/to/user_key-cert.pubに置かれます。ホスト証明書を作る際には、-h オプションが必要です:
生成されたホスト証明書は、/path/to/host_key-cert.pubに置かれます。
-D オプションを使って、トークンのライブラリを指定することでPKCS#11 トークン中に格納された CA鍵に署名することも可能です。このさい、CA鍵の公開部を-s 引数で指定します:
いずれの場合も、key_id は「鍵識別子」を表しており、これはその証明書が認証に使われた際にはサーバ側にログとして残ります。
証明書は、ある特定の principal (ユーザあるいはホスト) に対してのみ有効なように制限することもできます。デフォルトでは、生成された証明書はすべてのユーザおよびホストに対して有効です。特定の principal のみに有効な証明書を作るには:
ユーザ証明書のこれ以外の有効性や使用条件に関する制限は、証明書につけたオプションによって指定できます。証明書のオプションを使うと、SSHセッション時に特定の機能を禁止できたり、特定の接続元から提示したときのみ有効であるように設定できたり、また特定のコマンドのみを実行させたり、といったことができます。有効な証明書オプションについては、-O オプションに関する上記の解説を参考にしてください。
最後に、証明書には有効期間を定めることができます。-V オプションを使うと、証明書の開始日時と終了日時を指定できます。この範囲を過ぎてから提示された証明書は、無効とみなされます。デフォルトでは、証明書の有効期間は最大になっています。
ユーザあるいはホスト認証時に使われる鍵と、CA の公開鍵はsshd (8) またはssh (1) によって信頼されている必要があります。詳しくはこれらのコマンドのマニュアルページを参照してください。
~/.ssh/identityssh-keygen
によって自動的にアクセスされるわけではありませんが、秘密鍵ファイルのデフォルトの名前としてこれが提案されます。ssh (1)
はログイン要求があった際にこのファイルを読み込みます。~/.ssh/identity.pub~/.ssh/authorized_keysにこのファイルの内容を追加しておいてください。このファイルの内容を秘密にしておく必要はありません。~/.ssh/id_dsassh-keygen
によって自動的にアクセスされるわけではありませんが、秘密鍵ファイルのデフォルトの名前としてこれが提案されます。ssh (1)
はログイン要求があった際にこのファイルを読み込みます。~/.ssh/id_dsa.pub~/.ssh/authorized_keysにこのファイルの内容を追加しておいてください。このファイルの内容を秘密にしておく必要はありません。~/.ssh/id_rsassh-keygen
によって自動的にアクセスされるわけではありませんが、秘密鍵ファイルのデフォルトの名前としてこれが提案されます。ssh (1)
はログイン要求があった際にこのファイルを読み込みます。~/.ssh/id_rsa.pub~/.ssh/authorized_keysにこのファイルの内容を追加しておいてください。このファイルの内容を秘密にしておく必要はありません。/etc/moduli