SSH-KEYGEN(1)

名称
ssh-keygen - 認証用の鍵を生成、管理、および変換する

書式
ssh-keygen [-q] [-b ビット数] [-t 鍵の種類] [-N 新しいパスフレーズ] [-C コメント (訳注: SSH1 のみ)] [-f 出力先 identity ファイル] ssh-keygen -p [-P 古いパスフレーズ] [-N 新しいパスフレーズ] [-f パスフレーズを変更する identity ファイル] ssh-keygen -i [-f 変換する identity ファイル] ssh-keygen -e [-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 は ssh(1) で認証に使う鍵を生成、管理および変換します。デフォルトでは ssh-keygen は SSH プロトコル バージョン 1 で使われる RSA1 鍵を生成するように なっていますが、 -t オプションを指定すれば SSH プロトコル バージョン 2 で使われる 鍵を生成することができます。

ふつう、RSA認証 または DSA認証で SSH を使いたいユーザは、 一度このプログラムを実行すれば $HOME/.ssh/identity 、 $HOME/.ssh/id_dsa または $HOME/.ssh/id_rsa に鍵 (identity ファイル) を作ることができます。また /etc/rc などで見れらるように、 システム管理者がホスト鍵を生成するためにこのプログラムを 使うこともできます。

通常、このプログラムは鍵を生成したあと、その鍵 (identity) をどのファイルに 格納すればよいのか尋ねます。公開鍵は、秘密鍵を含む identity ファイルの名前に “.pub” をつけた名前のファイルとして格納されます。またこのプログラムは パスフレーズも尋ねてきます。 任意の長さの文字列をパスフレーズとして使用することができます。 パスフレーズをつけないときには、これは空でもかまいません (ホスト鍵のパスフレーズは必ず空でなければいけません)。 よいパスフレーズとは、 10〜30文字程度の長さで、簡単な文章や容易に 推測できるものではないことです (英語の散文は単語ごとのエントロピーが わずか 1〜2 ビットしかなく、パスフレーズとしては非常によくない例です)。 パスフレーズは -p オプションによって、後から変更することもできます。

失われてしまったパスフレーズをもとに戻すことはできません。もし パスフレーズを忘れてしまったり、なくしてしまったときには、 新しい鍵を生成してその公開鍵を別のマシンにコピーしなくてはならないでしょう。

RSA1 鍵 (訳注: SSH1 で使う鍵) の場合、 鍵のファイルにはコメントフィールドがあります。これはユーザが 鍵を区別するためだけに便宜的に用意されているものです (訳注: SSH2 の鍵にはコメントはありません)。コメントには 鍵の用途やその他有用な情報を書いておくことができます。 最初に鍵が作られるとき、コメントは “user@host” の形に初期化されますが、 -c オプションを使えば変更することができます。

鍵を生成したあと、それを使用可能にするために どこに置けばよいかは後で説明しています。

オプションには次のようなものがあります:

-b ビット数
    生成する鍵のビット数を指定します。最小値は 512 ビットです。 ふつうは 1024 ビットの鍵で充分だと考えられており、これ以上鍵を 長くしてもセキュリティの向上には役に立たず、遅くなるだけです。 デフォルトは 1024 ビットになっています。

-c  秘密鍵ファイルおよび公開鍵ファイルのコメントを変更します。 まず秘密鍵の入っているファイル名を訊かれ、 パスフレーズがあればそれを入力したあとに新しいコメントを入力します。

-e  このオプションは OpenSSH 形式の秘密鍵あるいは公開鍵ファイルを 読み、 ‘SECSH Public Key File Format (SECSH 公開鍵ファイル形式)’ の鍵を標準出力に表示します。 このオプションを使うと、OpenSSH の鍵を いくつかの商用 SSH 実装で使われている形式の鍵に変換できます。

-f  鍵を入れるファイルのファイル名を指定します。

-i  このオプションは SSH2-互換の形式である、暗号化されていない 秘密鍵 (あるいは公開鍵) ファイルを読み、それを OpenSSH 互換の秘密鍵 (あるいは公開鍵) に変換して 標準出力に表示します。 ssh-keygen は ‘SECSH Public Key File Format (SECSH 公開鍵ファイル形式)’ の鍵も読みこめます。 このオプションを使うと、いくつかの商用 SSH 実装で使われている 鍵を OpenSSH で使用できます。

-l  指定された秘密鍵ファイルあるいは公開鍵ファイルの 指紋 (fingerprint) を表示します。

-p  新しく秘密鍵をつくるのではなく、すでにある秘密鍵ファイルのパス フレーズを変更します。まず秘密鍵の入っているファイルを訊かれ、 古いパスフレーズを入力したあと、新しいパスワードを 2回入力します。

-q  静かな ssh-keygen 。 /etc/rc で新しい鍵をつくるときに使われます。

-y  このオプションは OpenSSH 形式の秘密鍵ファイルを読み、 OpenSSH 形式の公開鍵を標準出力に表示します。

-t 鍵の種類
    生成する鍵の種類を指定します。 とりうる値として、プロトコル バージョン 1 で使う “rsa1” 、およびプロトコル バージョン 2 で使う “rsa” または “dsa” があります。デフォルトは “rsa1” です。

-B  指定された秘密鍵あるいは公開鍵の bubblebabble ダイジェストを 表示します。

-C コメント
    新しいコメントを指定します。

-N 新しいパスフレーズ
    新しいパスフレーズを指定します。

-P パスフレーズ
    (古い) パスフレーズを指定します。

関連ファイル

$HOME/.ssh/identity
    そのユーザの、プロトコル バージョン 1 における RSA 認証用 秘密鍵を格納します。このファイルはその ユーザ以外の誰にも見せてはいけません。この鍵を生成するときに パスフレーズを指定するこもできます。パスフレーズは、3DES を使って ファイル中の秘密鍵の部分を暗号化するのに用いられます。このファイルは ssh-keygen によって自動的にアクセスされるわけではありませんが、 秘密鍵ファイルのデフォルトの名前としてこれが提案されます。 sshd(8) はログイン要求があった際にこのファイルを読み込みます。

$HOME/.ssh/identity.pub
    プロトコル バージョン 1 における RSA 認証用の公開鍵を格納します。 RSA 認証でログインしたいすべてのマシンの $HOME/.ssh/authorized_keys にこのファイルの内容を追加しておいてください。 このファイルの内容を秘密にしておく必要はありません。

$HOME/.ssh/id_dsa
    そのユーザの、プロトコル バージョン 2 における DSA 認証用 秘密鍵を格納します。このファイルはその ユーザ以外の誰にも見せてはいけません。この鍵を生成するときに パスフレーズを指定するこもできます。パスフレーズは、3DES を使って ファイル中の秘密鍵の部分を暗号化するのに用いられます。このファイルは ssh-keygen によって自動的にアクセスされるわけではありませんが、 秘密鍵ファイルのデフォルトの名前としてこれが提案されます。 sshd(8) はログイン要求があった際にこのファイルを読み込みます。

$HOME/.ssh/id_dsa.pub
    プロトコル バージョン 2 における DSA 認証用の公開鍵を格納します。 RSA 認証でログインしたいすべてのマシンの $HOME/.ssh/authorized_keys2 にこのファイルの内容を追加しておいてください。 このファイルの内容を秘密にしておく必要はありません。

$HOME/.ssh/id_rsa
    そのユーザの、プロトコル バージョン 2 における RSA 認証用 秘密鍵を格納します。このファイルはその ユーザ以外の誰にも見せてはいけません。この鍵を生成するときに パスフレーズを指定するこもできます。パスフレーズは、3DES を使って ファイル中の秘密鍵の部分を暗号化するのに用いられます。このファイルは ssh-keygen によって自動的にアクセスされるわけではありませんが、 秘密鍵ファイルのデフォルトの名前としてこれが提案されます。

$HOME/.ssh/id_rsa.pub
    プロトコル バージョン 2 における RSA 認証用の公開鍵を格納します。 RSA 認証でログインしたいすべてのマシンの $HOME/.ssh/authorized_keys2 にこのファイルの内容を追加しておいてください。 このファイルの内容を秘密にしておく必要はありません。

作者
OpenSSH は Tatu Ylonen による、フリーな オリジナル版 ssh 1.2.12 リリースから派生したものです。 Aaron Campbell、 Bob Beck、 Markus Friedl、 Niels Provos、 Theo de Raadt および Dug Song が多くのバグをとり除き、 新しい機能をふたたび追加して OpenSSH をつくりました。 SSH プロトコル バージョン 1.5 および 2.0 のサポートは Markus Friedl の貢献によるものです。

日本語訳
新山 祐介 (euske@cl.cs.titech.ac.jp) 2001/8/6

当マニュアルページは氏のご好意により FreeBSD 日本語マニュアルに収録させていただいています。 翻訳についてのご意見、ご指摘がありましたら新山氏 <euske@cl.cs.titech.ac.jp>、および FreeBSD jpman プロジェクト <man-jp@jp.FreeBSD.org> までお送りください。

関連項目
ssh(1), ssh-add(1), ssh-agent(1), sshd(8) J. Galbraith, R. Thayer, SECSH Public Key File Format, draft-ietf-secsh-publickeyfile-01.txt, March 2001, work in progress material.