日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
SSH-KEYGEN(1) FreeBSD 一般コマンドマニュアル SSH-KEYGEN(1)
名称
ssh-keygen -- OpenSSH 認証鍵ユーティリティ
書式
ssh-keygen [-q] [-a rounds] [-b bits] [-C comment] [-f output_keyfile]
[-m format] [-N new_passphrase] [-O option]
[-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa]
[-w provider] [-Z cipher]
ssh-keygen -p [-a rounds] [-f keyfile] [-m format] [-N new_passphrase]
[-P old_passphrase] [-Z cipher]
ssh-keygen -i [-f input_keyfile] [-m key_format]
ssh-keygen -e [-f input_keyfile] [-m key_format]
ssh-keygen -y [-f input_keyfile]
ssh-keygen -c [-a rounds] [-C comment] [-f keyfile] [-P passphrase]
ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
ssh-keygen -B [-f input_keyfile]
ssh-keygen -D pkcs11
ssh-keygen -F hostname [-lv] [-f known_hosts_file]
ssh-keygen -H [-f known_hosts_file]
ssh-keygen -K [-a rounds] [-w provider]
ssh-keygen -R hostname [-f known_hosts_file]
ssh-keygen -r hostname [-g] [-f input_keyfile]
ssh-keygen -M generate [-O option] output_file
ssh-keygen -M screen [-f input_file] [-O option] output_file
ssh-keygen -I certificate_identity -s ca_key [-hU] [-D pkcs11_provider]
[-n principals] [-O option] [-V validity_interval]
[-z serial_number] file ...
ssh-keygen -L [-f input_keyfile]
ssh-keygen -A [-a rounds] [-f prefix_path]
ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number]
file ...
ssh-keygen -Q [-l] -f krl_file file ...
ssh-keygen -Y find-principals [-O option] -s signature_file -f
allowed_signers_file
ssh-keygen -Y match-principals -I signer_identity -f allowed_signers_file
ssh-keygen -Y check-novalidate [-O option] -n namespace -s signature_file
ssh-keygen -Y sign [-O option] -f key_file -n namespace file ...
ssh-keygen -Y verify [-O option] -f allowed_signers_file -I
signer_identity -n namespace -s signature_file
[-r revocation_file]
解説
ssh-keygen は、ssh(1) のための認証鍵を生成し、管理し、そして変換します。
ssh-keygen は、SSH プロトコルバージョン 2 によって使用される鍵を作成する
ことができます。
生成される鍵のタイプは、-t オプションで指定されます。何も引数なしで呼び出
されるなら、ssh-keygen は、RSA 鍵を生成します。
また、ssh-keygen は、Diffie-Hellman 群交換 (DH-GEX) で使用される群
(group) を生成するために使用されます。詳細については、「モジュロの生成」
セクションを参照してください。
最後に、与えられた鍵が取り消されたたかどうかテストするために、ssh-keygen
を鍵取り消しリストを生成し更新するために使用することができます。詳細につ
いては、「鍵取り消しリスト」セクションを参照してください。
通常、公開鍵の認証で SSH を使用したい各ユーザは、~/.ssh/id_dsa,
~/.ssh/id_ecdsa, ~/.ssh/id_ecdsa_sk, ~/.ssh/id_ed25519,
~/.ssh/id_ed25519_sk または ~/.ssh/id_rsa で認証鍵を作成するために、これ
を一度実行します。さらに、システム管理者は、/etc/rc で見られるように、ホ
スト鍵を生成するために、これを使用します。
通常、このプログラムは、鍵を生成し、秘密鍵を格納するファイルを問い合わせ
ます。公開鍵は、同じ名前ですが、``.pub'' が追加されたファイルに格納されま
す。また、プログラムは、パスフレーズを問い合わせます。パスフレーズは、パ
スフレーズがないことを示すために空となるか (ホスト鍵は、空のパスフレーズ
がなければなりません)、または任意の長さの文字列となります。パスフレーズ
は、ひと続きの単語、句読点、数値、余白類、または必要な任意の文字列がある
フレーズを指定できることを除いて、パスワードに似ています。よいパスフレー
ズは、長さ 10-30 の文字で、簡単な文でなく、または、そうでなければ、容易に
推測可能でない (英語の散文は、1 文字ごとに 1-2 ビットのエントロピだけがあ
り、非常に悪いパスフレーズとなります)、大文字と小文字、数値と非英数字の文
字を混合したものを含みます。パスフレーズは、-p オプションを使用することに
よって後で変更することができます。
失われたパスフレーズを復元する方法はありません。パスフレーズが失われるか
または忘れられるなら、新しい鍵は、生成され、対応する公開鍵を他のマシンに
コピーしなければなりません。
ssh-keygen は、デフォルトで OpenSSH 固有の形式で鍵を書き込みます。この形
式は、秘密鍵ファイル自体の内で鍵のコメントを格納することと同様に静止して
鍵のためによりよい保護を与えるように好ましいものです。鍵のコメントは、鍵
を識別するのに役に立ちます。コメントは、鍵が作成されるとき、``user@host''
に初期化されますが、-c オプションを使用して変更することができます。
-m フラグを使用して、以前の使用されていた PEM 形式の秘密鍵を書き込むため
に ssh-keygen のためにまだ指定できます。これは、新しい鍵を生成するとき、
使用され、既存の新しい形式の鍵は、-p (パスフレーズの変更) フラグととも
に、このオプションを使用して変換されます。
鍵が生成された後に、ssh-keygen は、鍵が活性化される場所であるべきであるか
を問い合わせます。
オプションは、次の通りです:
-A まだ存在しないなら、すべてのデフォルトの鍵のタイプ (rsa、ecdsa と
ed25519) のホスト鍵を生成します。ホスト鍵は、デフォルトの鍵のファ
イルパス、空のパスフレーズ、鍵のタイプのためのデフォルトのビッ
ト、とデフォルトのコメントで生成されます。また、-f が指定されたな
ら、その引数は、ホスト鍵ファイルの結果のためのデフォルトパスへの
接頭辞として使用されます。これは、新しいホスト鍵を生成するために
/etc/rc によって使用されます。
-a rounds
秘密鍵を保存するとき、このオプションは、使用される KDF (key
derivation function;鍵派生関数, 現在は、bcrypt_pbkdf(3)) のラウン
ド (巡回) の数を指定します。より大きい数は、(鍵を盗むかもしれな
い) 強力なパスワードクラッキングへのより遅いパスフレーズ検証と抵
抗性増進 (increased resistance) の結果となります。デフォルトは、
16 ラウンドです。
-B 指定された秘密鍵または公開鍵ファイルの bubblebabble タイジェスト
を表示します。
-b bits
作成する鍵のビットの数を指定します。RSA 鍵について、最小サイズ
は、1024 ビットで、デフォルトは、3072 ビットです。一般的に、3072
ビットは、十分であると考えられます。DSA 鍵は、FIPS 186-2 によって
明記されるように、正確に 1024 ビットでなければなりません。ECDSA
鍵について、-b フラグは、次の 3 つの楕円曲線のサイズのうちの 1 つ
を選択することによって、それらの鍵の長さを決定します: 256, 384 ま
たは 521 ビット。ECDSA 鍵に対して、これらの 3 つの値以外のビット
長を使用することを試みると失敗します。ECDSA-SK, Ed25519 と
Ed25519-SK 鍵は、固定の長さがあり、-b フラグは、無視されます。
-C comment
新しいコメントを与えます。
-c 秘密鍵と公開鍵ファイルのコメントを変更することを要求します。プロ
グラムは、秘密鍵を含んでいるファイルのために、鍵があるなら、パス
フレーズのために、そして、新しいコメントためにプロンプトを出しま
す。
-D pkcs11
PKCS#11 共有ライブラリ pkcs11 によって提供された公開鍵をダウン
ロードします。-s と組み合わせて使用されるとき、このオプションは、
CA 鍵が PKCS#11 トークン (詳細については、「証明書」のセクション
を参照) に存在していることを示します。
-E fingerprint_hash
鍵の指紋を表示するとき、使用されたハッシュアルゴリズムを指定しま
す。有効なオプションは、次の通りです: ``md5'' と ``sha256''。デ
フォルトは、``sha256'' です。
-e このオプションは、秘密鍵または公開 OpenSSH 鍵ファイルを読み込ん
で、-m オプションによって指定された形式の 1 つで標準出力 (stdout)
に公開鍵を印刷 (表示) します。デフォルトのエクスポート形式は、
``RFC4716'' です。このオプションによって、いくつかの商用 SSH の実
装を含む、他のプログラムによって使用されている OpenSSH 鍵をエクス
ポートできます。
-F hostname | [hostname]:port
known_hosts ファイルの指定された (オプションのポート番号を付けて)
hostname を検索し、見つかったあらゆるものをリストします。このオプ
ションは、ハッシュされたホスト名またはアドレスを見つけるために役
に立ち、ハッシュされた形式で見つかった鍵を印刷するためにも -H オ
プションとともに使用されます。
-f filename
鍵ファイルのファイル名を指定します。
-g -r コマンドを使用して、指紋のリソースのレコードを印刷 (表示) する
とき、一般的な DNS 形式を使用します。
-H known_hosts ファイルをハッシュします。これは、すべてのホスト名と
アドレスを指定されたファイル内のハッシュされた表現に置き換えま
す。オリジナルの内容は、.old 接尾辞をつけたファイルに移動されま
す。これらのハッシュは、通常 ssh と sshd によって使用されますが、
それらは, たとえファイルの内容が開示されても、識別される情報を明
らかにしません。このオプションは、既存のハッシュされたホスト名を
修正せず、したがって、ハッシュされた名前とハッシュされない名前が
混在したファイルで使用しても安全です。
-h 鍵に署名するとき、ユーザ証明書の代わりにホスト証明書を作成しま
す。詳細については、「証明書」セクションを参照してください。
-I certificate_identity
公開鍵に署名するとき、鍵の identity を指定します。詳細について
は、「証明書」セクションを参照してください。
-i このオプションは、-m オプションによって指定された形式で暗号化され
ていない秘密鍵 (または公開鍵) ファイルを読み込んで、OpenSSH 互換
の秘密鍵 (または公開鍵) を標準出力に印刷 (表示) します。このオプ
ションによって、いくつかの商用 SSH の実装を含んで、他のソフトウェ
アから鍵をインポートできます。デフォルトのインポートの形式は、
``RFC4716'' です。
-K FIDO 認証符号から常駐鍵をダウンロードします。公開鍵と秘密鍵のファ
イルは、ダウンロードした鍵ごとに、カレントディレクトリに書き込ま
れます。複数の FIDO 認証符号がアタッチされているなら、鍵は、最初
に変更された認証符号からダウンロードされます。詳細については、
FIDO 認証符号セクションを参照してください。
-k KRL ファイルを生成します。このモードで、ssh-keygen は、コマンド行
に存在するすべての鍵または証明書を取り消す、-f フラグによって指定
された位置で KRL ファイルを生成します。取り消される鍵/証明書は、
公開鍵ファイルによって指定されるか、または「鍵取り消しリスト」セ
クションに記述される形式使用して指定されます。
-L 1 つ以上の証明書の内容を印刷 (表示) します。
-l 指定された公開鍵ファイルの指紋を示します。RSA 鍵と DSA 鍵につい
て、ssh-keygen は、一致する公開鍵ファイルを見つけようと試み、その
指紋を印刷 (表示) します。-v と組み合わされるなら、鍵のビジュアル
な ASCII art 表現は、指紋を供給されます。
-M generate
`diffie-hellman-group-exchange-*' 鍵交換方法によって最終的な使用
のために Diffie-Hellman Group Exchange (DH-GEX) パラメータの候補
を生成します。この操作によって生成された数値は、使用の前にさらに
スクリーニングされなければなりません。詳細については、「モジュロ
の生成」セクションを参照してください。
-M screen
Diffie-Hellman Group Exchange のために候補パラメータを選別しま
す。これは、候補となる数字のリストを受け付け、それらが安全な
(Sophie Germain) 素数であり、受け付け可能なグループの生成器である
かをテストします。この操作の結果は、/etc/moduli ファイルに追加さ
れます。詳細については、「モジュロの生成」セクションを参照してく
ださい。
-m key_format
鍵の生成、-i (インポート)、-e (エクスポート) の変換オプション、と
-p パスフレーズ操作のための鍵の形式を指定します。後者は、OpenSSH
の秘密鍵と PEM の秘密鍵の形式の間を変換するために使用されます。サ
ポートされている鍵の形式は、次の通りです: ``RFC4716'' (RFC
4716/SSH2 秘密鍵または秘密鍵)、``PKCS8'' (PKCS8 公開鍵または秘密
鍵)、または ``PEM'' (PEM 公開鍵)。デフォルトで、OpenSSH は、独自
の形式で新しく生成された秘密鍵を書き込みますが、エクスポートのた
めの公開鍵を変換するとき、デフォルトの形式は、``RFC4716'' です。
``PEM'' の形式を設定することは、サポートされる秘密鍵タイプを生成
するか、または更新するとき、古いPEM 秘密鍵の形式で鍵を格納しま
す。
-N new_passphrase
新しいパスフレーズを与えます。
-n principals
鍵に署名するとき、証明書に含まれる 1 つ以上のプリンシパル (ユーザ
またはホスト名) を指定します。複数のプリンシパルは、コンマによっ
て区切られて指定されます。詳細については、「証明書」セクションを
参照してください。
-O option
鍵/値オプションを指定します。これらは、ssh-keygen が実行を要求さ
れた操作に特有です。
証明書に署名するとき、「証明書」セクションにリストされているオプ
ションの 1 つは、ここで指定されます。
モデュールの生成またはスクリーニングを行うとき、「モジュロの生
成」セクションにリストされているオプションの 1 つが指定されます。
FIDO 認証符号に裏打ちされた鍵を生成するとき、FIDO 認証符号セク
ションにリストされているオプションが指定されます。
-Y フラグを使用して署名関連のオプションを実行するとき、次のオプ
ションが受け付けられます:
hashalg=algorithm
署名するメッセージをハッシュに使用するハッシュアルゴリズ
ムを選択します。有効なアルゴリズムは、``sha256'' と
``sha512'' です。デフォルトは、``sha512'' です。
print-pubkey
署名の検証後に、完全な公開鍵を標準出力に印刷 (表示) しま
す。
verify-time=timestamp
現在の時刻の代りに署名を検証するとき、使用する時刻を指定
します。時刻は、YYYYMMDD[Z] または YYYYMMDDHHMM[SS][Z] 形
式で日付または時刻として指定されます。日付と時刻は、末尾
に Z 文字が付いていないなら、現在のシステムタイムゾーンで
解釈され、この場合、UTC タイムゾーンとして解釈されます。
-r フラグを使用して公開鍵から SSHFP DNS レコードを生成するとき、
次のオプションが受け付けられます:
hashalg=algorithm
-D フラグを使用して SSHFP レコードを印刷 (表示) すると
き、使用するハッシュアルゴリズムを選択します。有効なアル
ゴリズムは、``sha1'' と ``sha256'' です。デフォルトは、両
方を印刷 (表示) します。
-O オプションは、複数回指定することができます。
-P passphrase
(古い) パスフレーズを与えます。
-p 新しい秘密鍵を作成する代わりに秘密鍵ファイルのパスフレーズの変更
を要求します。プログラムは、秘密鍵を含んでいるファイルのために、
古いパスフレーズのために、そして新しいパスフレーズのために 2 度プ
ロンプトを出します。
-Q 鍵が KRL で取り消されたかどうかテストします。また、-l オプション
が指定されるなら、KRL の内容が、印刷 (表示) されます。
-q 静かな ssh-keygen。
-R hostname | [hostname]:port
指定された hostname (オプションのポート番号) に属するすべての鍵を
known_hosts ファイルから削除します。このオプションは、ハッシュさ
れたホストを削除するために役に立ちます (上記の -H オプションを参
照)。
-r hostname
指定された公開鍵ファイルのために指定された hostname の SSHFP 指紋
リソースのレコードを印刷 (表示) します。
-s ca_key
指定された CA 鍵を使用して、公開鍵を承認します (署名します)。詳細
については、「証明書」セクションを参照してください。
KRL を生成するとき、-s は、鍵の ID またはシリアル番号によって証明
書を直接取り消すために使用される CA 公開鍵ファイルへのパスを指定
します。詳細については、「鍵取り消しリスト」セクションを参照して
ください。
-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa
作成する鍵の種類を指定します。指定できる値は、``dsa'', ``ecdsa'',
``ecdsa-sk'', ``ed25519'', ``ed25519-sk'' または ``rsa'' です。
また、このフラグは、RSA 認証局の鍵を使用して証明書に署名すると
き、必要な署名タイプを指定するために使用されます。利用可能な RSA
署名の変異型は、``ssh-rsa'' (SHA1 署名、推奨しません)、``rsa
sha2-256'', と ``rsa-sha2-512'' (デフォルト) です。
-U -s または -Y sign と組み合わせで使用されるとき、このオプション
は、CA 鍵が ssh-agent(1) にあることを示します。詳細については、
「証明書」セクションを参照してください。
-u KRL を更新します。-k で指定されたとき、コマンド行によってリストさ
れた鍵は、作成されている新しい KRL ではなく既存の KRL に追加され
ます。
-V validity_interval
証明書に署名するとき、正当性の間隔 (validity interval) を指定しま
す。正当性の間隔は、証明書が、有効に現在始まって、その時間に期限
が切れるか、または明白な時間の間隔を示すためにコロンによって区切
られた 2 つの時間から成ることを示す、単一の時間から成ります。
開始時刻は、次のように指定されます:
• 証明書の開始時刻が指定されていないことを示す文字列
``always''。
• YYYYMMDD または YYYYMMDDHHMM[SS] として書式化されたシステムの
タイムゾーンの日付または時刻。
• YYYYMMDDZ または YYYYMMDDHHMM[SS]Z としての UTC タイムゾーン
の日付または時刻。
• sshd_config(5) の「時間の形式」セクションで説明されている形式
の間隔が続くマイナス符号で構成される現在のシステム時間より前
の相対時間。
• ``0x'' で始まる 16 進数としてのエポック (1970 年 1 月 1 日
00:00:00 UTC) からの生の秒数。
終了時刻は、開始時刻と同様に指定されます:
• 証明書に終了時刻が指定されていないことを示す文字列 ``for
ever''。
• YYYYMMDD または YYYYMMDDHHMM[SS] として書式化されたシステムの
タイムゾーンの日付または時刻。
• YYYYMMDDZ または YYYYMMDDHHMM[SS]Z としての UTC タイムゾーン
の日付または時刻。
• sshd_config(5). の TIME FORMATS セクションで説明されている形
式の間隔が続くプラス符号で構成される現在のシステム時間から後
の相対時間。
• ``0x'' で始まる 16 進数としてのエポック (1970 年 1 月 1 日
00:00:00 UTC) からの生の秒数。
例えば:
+52w1d 現在から 52 週間と 1 日後まで有効です。
-4w:+4w
現在から 4 週間前から 4 週間後まで有効です。
20100101123000:20110101123000
2010 年 1 月 1 日午後 12:30 から 2011 年 1 月 1 日午後
12:30 まで有効です。
20100101123000Z:20110101123000Z
同様ですが、システムのタイムゾーンではなく UTC タイムゾー
ンとして解釈されます。
-1d:20110101
昨日から 2011 年 1 月 1 日午前 0 時まで有効です。
0x1:0x2000000000
およそ 1970 年初頭から 2033 年 5 月まで有効です。
-1m:forever
1 分前から有効で、期限切れになることはありません。
-v 冗長モード。ssh-keygen は、その進行に関するデバッグメッセージを印
刷 (表示) します。これは、モジュロ生成のデバッグのために役に立ち
ます。複数の -v オプションは、冗長性を増加させます。最大は、3 で
す。
-w provider
内部の USB HID サポートを使用してデフォルトを上書きして、FIDO 認
証符号のホストの鍵を作成するとき、使用するライブラリへのパスを指
定します。デフォルトでは組み込み USB HID サポートを使用します。
-Y find-principals
-f フラグを使用して提供された権限を与えられた署名者ファイルの -s
フラグを使用して提供された署名の公開鍵に関連する (複数) プリンシ
パルを見つけます。許可された署名者ファイルの形式は、以下の「許可
された署名者」セクションに文書化されています。1 つ以上の一致する
プリンシパルが見つかるなら、それらは、標準出力に返します。
-Y match-principals
-f フラグを使用して指定された委任された署名者ファイルで、-I フラ
グを使用して提供されたプリンシパル名に一致するプリンシパルを見つ
けます。1 つ以上の一致するプリンシパルが見つかったなら、それら
は、標準出力で返されます。
-Y check-novalidate
ssh-keygen -Y sign を使用して生成された署名に有効な構造があるかど
うかをチェックします。これは、署名が権限を与えられた署名者に由来
するものであるかどうかを検証しません。署名をテストするとき、ssh-
keygen は、標準入力のメッセージと -n を使用して署名の名前空間を受
け付けます。また、対応する署名を含んだファイルは、-s フラグを使用
して供給されなければなりません。署名のテストが成功すると、ssh-
keygen によってシグナルが生成され、0 の終了ステータスを返します。
-Y sign
ssh 鍵を使用してファイルまたはデータに暗号署名します。署名のと
き、ssh-keygen は、コマンド行で署名する 0 個以上のファイルを受け
付け - ファイルが指定されないなら、ssh-keygen は、標準入力で提示
されたデータに署名します。署名は、``.sig'' を付加した入力ファイル
のパスに書き込まれるか、または署名されるメッセージが標準入力から
読み込まれたなら、標準出力に書き込まれます。
署名のために使用される鍵は、-f オプションを使用して指定され、秘密
鍵、または ssh-agent(1) で利用可能な秘密鍵の半分がある公開鍵のい
ずれかを参照します。(例えば、ファイルの署名対電子メールの署名) 異
なる使用のドメインにわたって署名の混同を防ぐために使用される追加
の署名の名前空間は、-n フラグを通して提供されなければなりません。
名前空間は、任意の文字列で、次を含んでいます: ファイルの署名のた
めに ``file'' メールの署名するために ``email''。カスタムな使用に
ついて、あいまいさのない名前空間を生成するために NAMES
PACE@YOUR.DOMAIN のパターンにしたがって名前を使用することをお勧め
します。
-Y verify
上述のように ssh-keygen -Y sign を使用して生成された署名の検証を
要求します。署名を検証するとき、ssh-keygen は、標準入力でメッセー
ジを受け付け、-n を使用して署名の名前空間を受け付けます。また、対
応する署名を含むファイルは、-s フラグを使用して、-I を使用して署
名者の識別とともに -f フラグを通して許可される署名者のリストを供
給されなければなりません、許可された署名者のファイルの形式は、以
下の「許可された署名者」セクションで文書化されています。-r フラグ
を使用して、取り消された鍵を含むファイルを渡すことができます。取
り消されたファイルは、KRL または公開鍵の 1 行ごとのリストです。権
限を与えられた署名者によって検証が成功すると、0 の終了ステータス
を返す ssh-keygen によってシグナルが伝えられます。
-y このオプションは、秘密の OpenSSH 形式ファイルを読み込み、stdout
に OpenSSH 公開鍵を印刷 (表示) します。
-Z cipher
OpenSSH 形式の秘密鍵ファイルを書き込むとき、暗号化のために使用す
る暗号を指定します。利用可能な暗号のリストは、"ssh -Q cipher" を
使用して取得されます。デフォルトは、``aes256-ctr'' です。
-z serial_number
同じ CA からと他のものからと、この証明書を区別するために証明書に
埋め込まれるシリアル番号を指定します。serial_number の前に `+' 文
字が付けられるなら、シリアル番号は、単一のコマンド行で署名された
証明書ごとに増加します。デフォルトのシリアル番号は、0 です。
KRL を生成するとき、-z フラグは、KRL バージョン番号を指定するため
に使用されます。
モジュロの生成
ssh-keygen は、Diffie-Hellman 群交換 (Diffie-Hellman Group Exchange; DH
GEX) プロトコルのための群を生成するために使用されます。これらの群を生成す
ることは、次の 2 つの段階の処理です: 最初に、候補の素数は、高速ですが、メ
モリ集約的なプロセスを使用して生成されますが、次に、これらの候補の素数
は、適合性 (CPU 集約的なプロセス) に関してテストされます。
素数の生成は、-M generate オプションを使用して行なわれます。素数の必要な
長さは、-O bits オプションによって指定されます。例えば:
# ssh-keygen -M generate -O bits=2048 moduli-2048.candidates
デフォルトで、素数の検索は、必要な長さの範囲でランダムな点で始められま
す。これは、(16 進数単位で) 異なる開始点を指定する、-O start オプションを
使用して、無効にされます。
いったん候補の集合が生成されると、それらは、適切かどうかを検査されなけれ
ばなりません。これは、-M screen オプションを使用して行なわれます。この
モードで、ssh-keygen は、標準入力 (または -f オプションを使用して指定され
たファイル) から候補を読み込みます。例えば:
# ssh-keygen -M screen -f moduli-2048.candidates moduli-2048
デフォルトで、各候補は、100 の主要なテストを受けます。これは、-O prime-
tests オプションを使用して無効にされます。DH ジェネレータの値は、検討中の
素数のために自動的に選択されます。特定のジェネレータが必要とされるなら、
それは、-O generator オプションを使用して要求されます。有効なジェネレータ
の値は、2、3 と 5 です。
スクリーニングされた DH 群は、/etc/moduli にインストールされます。この
ファイルは、一連のビット長のモジュラが含まれていることが重要です。
オプションの数は、-O フラグを通してモデュールの生成とスクリーニングのため
に利用可能でず:
lines=number
DH 候補のスクリーニングを行なう間に指定された行数のスクリーニング
をの後に終了します。
start-line=line-number
DH 候補のスクリーニングを行なう間に指定された行数でスクリーニング
を開始します。
checkpoint=filename
DH 候補のスクリーニングを行う間に最後に処理した行を指定されたファ
イルに書き込みます。これは、ジョブを再開するとき、すでに処理され
た入力ファイルの行をスキップするために使用されます。
memory=mbytes
DH-GEX のための候補モジュールを生成するとき、使用する (メガバイト
単位の) メモリ量を指定します。
start=hex-value
DH-GEX のための候補モジュラを生成するとき、(16 進数単位の) 開始点
を指定します。
generator=value
DH-GEX のための候補モジュラをテストするとき、希望する (10 進数単
位の9 ジェネレータを指定します。
証明書
ssh-keygen は、ユーザまたはホスト認証のために使用される証明書を作成するた
めに鍵の署名をサポートします。証明書は、公開鍵、いくつかの identity 情
報、0 以上のプリンシパル (ユーザまたはホスト) 名、と認証局 (CA) 鍵によっ
て署名される 1 組のオプションから成ります。次に、クライアントまたはサーバ
は、多くのユーザ/ホスト鍵を信じるよりむしろ CA 鍵だけを信じて、証明書の署
名を検証します。OpenSSH 証明書は、ssl(8) で使用される X.509 証明書と異
なって、より簡潔な形式であることに注意してください。
ssh-keygen は、2 つのタイプの証明書をサポートしています: ユーザとホストで
す。ユーザ証明書は、サーバへのユーザを認証しますが、ホスト証明書は、ユー
ザへのサーバのホストを認証します。ユーザ証明書を生成するために:
$ ssh-keygen -s /path/to/ca_key -I key_id /path/to/user_key.pub
結果の証明書は、/path/to/user_key-cert.pub に置かれます。ホスト証明書は、
-h オプションを必要とします:
$ ssh-keygen -s /path/to/ca_key -I key_id -h /path/to/host_key.pub
ホスト証明書は、/path/to/host_key-cert.pub への出力となります。
-D を使用してトークンライブラリを提供することによって PKCS#11 トークンに
格納された CA 鍵を使用し、引数として公開の半分を -s に提供することによっ
て CA 鍵を識別して署名することは可能です:
$ ssh-keygen -s ca_key.pub -D libpkcs11.so -I key_id user_key.pub
同様に、ssh-agent(1) でホストにされる CA 鍵になり得ます。これは、-U フラ
グによって示され、再び、CA 鍵は、その公開の半分によって識別されなければな
りません。
$ ssh-keygen -Us ca_key.pub -I key_id user_key.pub
すべての場合に、key_id は、証明書が認証に使用されるとき、サーバによってロ
グ記録される "key identifier" (鍵識別子) です。
証明書は、1 組のプリンシパル (ユーザ/ホスト) 名のために有効となるように制
限されます。デフォルトで、生成された証明書は、すべてのユーザまたはホスト
に有効です。指定されたプリンシパルのセットのための証明書を生成するために:
$ ssh-keygen -s ca_key -I key_id -n user1,user2 user_key.pub
$ ssh-keygen -s ca_key -I key_id -h -n host.domain host_key.pub
ユーザ証明書の正当性と使用の追加制限は、証明書のオプションを通して指定さ
れます。証明書オプションは、SSH セッションの機能を無効にするか、特定の発
信元アドレスから提示される場合にだけ有効となるか、または特定のコマンドの
使用を強制します。
ユーザ証明書のために有効なオプションは、次の通りです:
clear すべての有効なパーミッションをクリアします。これは、パーミッショ
ンのデフォルト設定をクリアするために役に立つので、パーミッション
は、個別に追加されます。
critical:name[=contents]
extension:name[=contents]
任意の証明書のクリティカルオプションまたは拡張子を含みます。指定
された name は、例えば、``name@example.com'' のようにドメインの接
尾辞を含めるべきです。contents が指定されるなら、文字列としてエン
コードされた拡張子/オプションの内容として含まれ、そうでなければ、
拡張子/オプションは、内容 (通常、フラグを示す) なしで作成されま
す。拡張は、それを認識しないクライアントまたはサーバによって無視
されますが、未知の重要なオプションによって、証明書は、拒否されま
す。
force-command=command
証明書が認証に使用されますとき、ユーザによって指定されたあらゆる
シェルまたはコマンドの代わりに command の実行を強制します。
no-agent-forwarding
ssh-agent(1) の転送を無効にします (デフォルトで許可されます)。
no-port-forwarding
ポート転送を無効にします (デフォルトで許可されます)。
no-pty PTY の割り付けを無効にします (デフォルトで許可されます)。
no-user-rc
sshd(8) によって ~/.ssh/rc の実行を無効にします (デフォルトで許可
されます)。
no-x11-forwarding
X11 転送を無効にします (デフォルトで許可されます)。
permit-agent-forwarding
ssh-agent(1) の転送を許可します。
permit-port-forwarding
ポート転送を許可します。
permit-pty
PTY の割り付けを可許可します。
permit-user-rc
sshd(8) によって ~/.ssh/rc の実行を許可します。
permit-X11-forwarding
X11 転送を許可します。
no-touch-required
(例えば、ユーザに認証符号を変更することによって) ユーザの存在の実
演を含む、この鍵を使用して行なわれる署名を要求しません。このオプ
ションは、FIDO 認証符号アルゴリズム ecdsa-sk と ed25519-sk のため
にのみ意味があります。
source-address=address_list
証明書が有効であるとみなされる送信元アドレスを制限します。
address_list は、CIDR 形式の 1 つ以上のアドレス/ネットマスクのペ
アのコンマで区切られたリストです。
verify-required
ユーザが最初に検証されたことを示す、この鍵を使用して行なわれる署
名を要求します。このオプションは、FIDO の認証符号アルゴリズム
ecdsa-sk と ed25519-sk のためにのみ意味があります。現在、PIN 認証
は、サポートされている認証方法のみですが、他の方法は、将来にサ
ポートされます。
現在のところ、標準オプションは、ホスト鍵のために有効です。
最終に、証明書は、正当性の存続期間に定義されます。-V オプションによって、
証明書の仕様の始めと終わりの時刻を可能にします。この範囲の外に同時に提示
される証明書は、有効であると見なされません。デフォルトで、証明書は、UNIX
基準時点 (Epoch) から遠い将来まで有効です。
ユーザまたはホスト認証に使用される証明書について、CA 公開鍵は、sshd(8) ま
たは ssh(1) によって信頼されなければなりません。詳細については、それらの
マニュアルページを参照してください。
FIDO 認証符号
ssh-keygen は、FIDO 認証符号に裏打ちされた鍵を生成することができます、そ
の後、鍵が使用されるとき、ハードウェアの認証符号としてアタッチされている
限り、OpenSSH によってサポートされている他の鍵タイプと同じように使用され
ます。FIDO 認証符号ジェネレータは、通常、ユーザがタッチまたはタップして操
作を明示的に認証する必要があります。FIDO 鍵は、次の 2 つの部分で構成され
ます: ディスクの秘密鍵ファイルに格納されている鍵のハンドル部分と、各 FIDO
認証符号にユニークで、認証符号ハードウェアからエクスポートできないデバイ
スごとの秘密鍵。これらは、認証チャレンジに署名するために使用される実際の
鍵を導出するために認証時にハードウェアによって結合されます。サポートされ
ている鍵のタイプは、ecdsa-sk と ed25519-sk です。
FIDO 鍵のために有効なオプションは、次の通りです:
application
``ssh:'' のデフォルトの FIDO アプリケーション/オリジン文字列を上
書きします。これは、ホストまたはドメイン特有の常駐鍵を生成すると
きに役に立ちます。指定されたアプリケーション文字列は、``ssh:'' で
始まらなければなりません。
challenge=path
鍵の生成の間に FIDO 認証符号に渡されるチャレンジ文字列へのパスを
指定します。チャレンジ文字列は、鍵の登録のための帯域外プロトコル
の一部として使用されます (ランダムチャレンジが、デフォルトによっ
て使用されます)。
device 認証符号のミドルウェアの選択させるものではなく、使用する fido(4)
デバイスを明示的に指定します。
no-touch-required
署名を作成するとき、生成された秘密鍵が、タッチイベント (ユーザの
存在) を必要とすべきでないことを示します。sshd(8) は、autho
rized_keys オプションを通して上書きされないなら、デフォルトによっ
てそのような署名を拒否することに注意してください。
resident
鍵のハンドルは、FIDO の認証符号自体に格納するべきであることを示し
ます。これによって、複数のコンピュータで認証符号を簡単に使用でき
るようになります。レジデント鍵は、FIDO2 認証符号でサポートされ、
通常、PIN は、生成する前に認証符号で設定することを必要とします。
常駐鍵は、ssh-add(1) を使用して認証符号から負担を取り除きます。
FIDO 認証符号で鍵の両方の部分を格納することは、攻撃者が盗まれた認
証符号デバイスを使用することができる可能性が高くなります。
user 常駐鍵に関連付けられるユーザ名は、空のデフォルトのユーザ名を上書
きします。ユーザ名を指定することは、同じアプリケーション名のため
に複数の常駐鍵を生成するとき、役に立ちます。
verify-required
この秘密鍵が署名ごとにユーザ検証を要求するべきであることを示しま
す。すべての FIDO 認証符号がこのオプションをサポートしているわけ
ではありません。現在、PIN 認証は、サポートされている認証方法のみ
ですが、将来的に、他の方法もサポートされるかもしれません。
write-attestation=path
鍵の生成の間に、FIDO 認証符号から返された証明データを記録するため
に使用されます。この情報は、潜在的に細心の注意が払われます。デ
フォルトで、この情報は、破棄されます。
鍵取り消しリスト
ssh-keygen は、OpenSSH 形式の鍵取り消しリスト (OpenSSH format Key Revoca
tion Lists, KRL) を管理することができます。これらのバイナリファイルは、そ
れらがシリアル番号によって取り消されているなら、証明書ごとにわずかに 1
ビットほどを取り、コンパクトな形式を使用して取り消される鍵または証明書を
指定します。
KRL は、-k フラグを使用して生成されます。このオプションは、コマンド行から
1 つ以上のファイルを読み込み、新しい KRL を生成します。ファイルは、1 行ご
とに 1 つをリストされる、KRL 仕様 (以下を参照) または公開鍵を含んでいま
す。平易な公開鍵は、それらのハッシュまたは KRL と (シリアルが、0 か、また
は利用可能でないなら) シリアル番号または鍵 ID によって取り消された証明書
のないようをリストすることによって取り消されます。
KRL 仕様を使用して、鍵を取り消することは、鍵を取り消すために使用されるレ
コードのタイプに関する明白な制御を提供し、手元に完全なオリジナルの証明書
を持たずに、シリアル番号または鍵 ID によって証明書を直接取り消すために使
用されます。KRL 仕様は、コロンといくつかのディレクティブ特有の情報が続
く、次のディレクティブの 1 つを含んでいる行から成ります。
serial: serial_number[-serial_number]
指定されたシリアル番号がある証明書を取り消します。シリアル番号
は、0 を含まない、64 ビットの値で、10 進数、16 進数または 8 進数
で表現されます。ハイフンによって区切られる 2 つのシリアル番号が指
定されるなら、範囲の間を含むシリアル番号は、取り消されます。CA 鍵
は、-s オプションを使用して、ssh-keygen コマンド行で指定されなけ
ればなりません。
id: key_id
指定された鍵 ID 文字列がある証明書を取り消します。CA 鍵は、-s オ
プションを使用して、ssh-keygen コマンド行で指定されなければなりま
せん。
key: public_key
指定された鍵を取り消します。証明書がリストされるなら、それは、平
易な公開鍵として取り消されます。
sha1: public_key
KRL の SHA1 ハッシュを含めることによって指定された鍵を取り消しま
す。
sha256: public_key
KRL の SHA256 ハッシュを含めることによって指定された鍵を取り消し
ます。SHA256 ハッシュによって鍵を取り消された KRL は、7.9 以前の
OpenSSH バージョンによってサポートされません。
hash: fingerprint
sshd(8) 認証ログメッセージまたは ssh-keygen -l フラグから取得され
るように、指紋ハッシュを使用して鍵を取り消します。ここで SHA256
の指紋だけは、ここでサポートされ、その結果として生じる KRL は、
7.9 以前の OpenSSH バージョンによってサポートされません。
KRL は、-k に加えて -u フラグを使用して更新されます。このオプションが指定
されるとき、コマンド行によってリストされた鍵は、それらを既にあるもにに追
加して、KRL にマージされます。
また、それが特別の鍵 (または複数の鍵) を取り消すかどうかテストするために
KRL を与えることは、可能です。-Q フラグは、コマンド行で指定された各鍵をテ
ストして、既存の KRL に問い合わせます。コマンド行でリストされたあらゆる鍵
が取り消されている (または、エラーに遭遇する) なら、ssh-keygen は、0 以外
の終了ステータスで終了します。鍵が取り消された場合のみ、0 の終了ステータ
スが、返されます。
許可された署名者
署名を検証するとき、ssh-keygen は、署名が権限を与えられたソースに由来する
かどうかを判断するために、識別と鍵のシンプルなリストを使用します。この "
許可された署名 (allowed signers)" ファイルは、sshd(8) で説明されている
AUTHORIZEDXKEYS FILE FORMAT (権限を与えられた鍵のファイルの形式) の後にパ
ターン化された形式を使用します。ファイルの各行は、空白で区切られた次の
フィールドを含みます: principals, options, keytype, base64-encoded key.
空行と、`#' で始まる行は、コメントとして無視されます。
プリンシパルフィールドは、署名を受け付ける 1 つ以上のコンマで区切られた
USER@DOMAIN 識別パターンからなるパターンリスト (ssh_config(5) のパターン
参照) です。検証のとき、-I オプションを通して提示されたし識別は、検証のた
めに受け付け可能とみなされる対応する鍵のための順序でプリンシパルのパター
ンに一致しなければなりません。
オプション (存在するなら) は、コンマで区切られたオプションの仕様で構成さ
れています。二重引用符内を除いて、空白は、許可されません。次のオプション
の仕様は、サポートされています (オプションのキーワードは大文字と小文字を
区別しません):
cert-authority
この鍵を認証局 (CA) として受け付け、この CA によって署名された証
明書は、検証のために受け付けられることを示しています。
namespaces=namespace-list
この鍵のために受け付けられる名前空間のパターンリストを指定しま
す。このオプションが存在しているなら、署名オブジェクトに組み込ま
れ検証コマンド行に表示される署名名前空間は、鍵が受付可能と見なさ
れる前に、指定されたリストと一致しなけれなりません。
valid-after=timestamp
鍵が、YYYYMMDD[Z] または YYYYMMDDHHMM[SS][Z] 形式の日付または時刻
である、指定されたタイムスタンプ以降の使用のために有効であること
を示します。日付と時刻は、末尾に Z 文字が付いていないなら、現在の
システムのタイムゾーンとして解釈され、この場合、UTC タイムゾーン
として解釈されます。
valid-before=timestamp
鍵が使用するために有効であるか、または指定されたタイムスタンプの
前であることを示します。
証明書によって行なわれる署名を検証するとき、予想されるプリンシパル名は、
許可された署名者ファイルのプリンシパルパターンと、証明書自体に組み込まれ
たプリンシパルの両方に一致しなければなりません。
許可された署名者ファイルの例は、次の通りです:
# 行の始めに許可されたコメント
user1@example.com,user2@example.com ssh-rsa AAAAX1...
# ドメインのすべてのプリンシパルのための信頼される認証局.
*@example.com cert-authority ssh-ed25519 AAAB4...
# ファイルの署名のためだけ受付される鍵.
user2@example.com namespaces="file" ssh-ed25519 AAA41...
環境変数
SSH_SK_PROVIDER
組み込み USB HID サポートを使用するデフォルトを上書きして、FIDO
認証符号ホストの鍵をロードするとき、使用されるライブラリへのパス
を指定します。
関連ファイル
~/.ssh/id_dsa
~/.ssh/id_ecdsa
~/.ssh/id_ecdsa_sk
~/.ssh/id_ed25519
~/.ssh/id_ed25519_sk
~/.ssh/id_rsa
ユーザの DSA、ECDSA、認証符号ホスト ECDSA、Ed25519、認証符号ホス
ト Ed25519、または RSA 認証の識別を含んでいます。このファイルは、
ユーザ以外の誰によってでも読み込み可能であってはいけません。鍵を
生成するとき、パスフレーズを指定することは可能です。そのパスフ
レーズは、128 ビットの AES を使用して、このファイルの秘密鍵の部品
を暗号化するために使用されます。このファイルは、ssh-keygen によっ
て自動的にアクセスされませんが、それは、秘密鍵のためのデフォルト
のファイルとして提供されます。ssh(1) は、ログインが試みられると
き、このファイルを読み込みます。
~/.ssh/id_dsa.pub
~/.ssh/id_ecdsa.pub
~/.ssh/id_ecdsa_sk.pub
~/.ssh/id_ed25519.pub
~/.ssh/id_ed25519_sk.pub
~/.ssh/id_rsa.pub
DSA、ECDSA、認証符号ホスト ECDSA、Ed25519、認証符号ホスト Ed25519
または認証のための RSA 公開鍵を含んでいます。このファイルの内容
は、ユーザが公開鍵認証を使用してログインしたいすべてのマシンで
~/.ssh/authorized_keys に追加されるべきです。このファイルの秘密の
内容を維持する必要はありません。
/etc/moduli
DH-GEX のために使用される Diffie-Hellman 群を含んでいます。ファイ
ルの形式は、moduli(5) に説明されています。
関連項目
ssh(1), ssh-add(1), ssh-agent(1), moduli(5), sshd(8)
The Secure Shell (SSH) Public Key File Format, RFC 4716, 2006.
作者
OpenSSH は、Tatu Ylonen によってリリースされたオリジナルのフリーな ssh
1.2.12 の派生物です。Aaron Campbell、Bob Beck、Markus Friedl、Niels
Provos、Theo de Raadt と Dug Song は、多くのバグを取り除き、新しい機能を
再び追加し、OpenSSH を作成しました。Markus Friedl は、SSH プロトコルバー
ジョン 1.5 と 2.0 のためのサポートを寄贈しました。
FreeBSD 13.2 February 10, 2023 FreeBSD 13.2