連載
» 2019年08月02日 05時00分 公開

Linux基本コマンドTips(327):【 ssh-keygen 】コマンド――SSHの公開鍵と秘密鍵を作成する

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、SSHの公開鍵と秘密鍵を作成する「ssh-keygen」コマンドです。

[西村めぐみ,@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、SSHの公開鍵と秘密鍵を作成する「ssh-keygen」コマンドです。

ssh-keygenコマンドとは?

 「ssh-keygen」はSSH(Secure SHell)の公開鍵と秘密鍵を作成するコマンドです。

 SSHは、暗号や認証を使って通信を行うためのプロトコルです。ssh-keygenコマンドは「OpenSSH」で使う公開鍵と秘密鍵や、CA鍵(Certificate Authority、認証局による鍵)を使った「証明書」と呼ばれるファイルを作成できます。今回は、公開鍵と秘密鍵を作成する方法を扱います。



ssh-keygenコマンドの書式

ssh-keygen [オプション]

※[ ]は省略可能な引数を示しています。





ssh-keygenの主なオプション

短いオプション 意味
-t 方式 作成する鍵の暗号化形式を「rsa」(デフォルト)、「dsa」「ecdsa」「ed25519」から指定する
-b ビット数 作成する鍵のビット数を指定する(RSA形式の場合、デフォルトは2048bit)
-a ラウンド数 ed25519形式で生成する際のKDF(Key Derivation Function)ラウンド数を指定する。数が大きいと暗号の耐性が上がるが、処理に時間がかかるようになる
-f ファイル ファイルを指定する(生成または読み出すファイルを指定)。ただし、併用するオプションによって意味が変化する(通常は鍵ファイル)
-p パスフレーズを変更する(対話形式で元のパスフレーズを1回、新しいパスフレーズを2回指定する)。元のパスフレーズは「-P」オプション、新しいパスフレーズは「-N」オプションで指定可能
-N パスフレーズ 新しく設定するパスフレーズを指定する
-P パスフレーズ 元のパスフレーズを指定する
-C コメント コメントを指定する(デフォルトは「ユーザー名@ホスト名」。「-C ""」でコメントを削除)
-E 形式 鍵の指紋(fingerprint)を表示する際の形式を「sha256」(デフォルト)か「md5」で指定する

ssh-keygenの主なオプション(known_hosts関連)

短いオプション 意味
-F ホスト名 指定したホスト名を、鍵ファイルとともに保存されている「known_hosts」ファイルから探して表示する(-fオプションでknown_hostsファイルを指定可能、-lオプションで対応する指紋を表示可能)
-H 「known_hosts」ファイルを更新する(-fオプションでknown_hostsファイルを指定可能、元のファイルは拡張子.oldで保存される)
-R ホスト名 指定したホストに属する鍵を全て取り除く(-fオプションでknown_hostsファイルを指定可能)
-r ホスト名 指定したホストに対応する指紋を表示する(-fオプションでknown_hostsファイルを指定可能)

ssh-keygenの主なオプション(変換関連)

短いオプション 意味
-i 暗号化されていない秘密鍵ファイルまたは公開鍵ファイルを読み出し、OpenSSH互換形式に変換してから標準出力に出力する(変換元のファイルは-fオプションまたは対話式で指定、-mオプションで変換元の鍵の形式を指定できる)
-e OpenSSH形式の秘密鍵ファイルまたは公開鍵ファイルを読み出し、RFC 4716形式または-mオプションで指定した形式で標準出力に出力する(変換元のファイルは-fオプションまたは対話式で指定)
-m 形式 「-i」オプションで入力する鍵の形式を、「-e」オプションで出力する鍵の形式を、「RFC4716」(デフォルト)、「PKCS8」「PEM」から指定する
-y OpenSSH形式の秘密鍵ファイルを読み出し、OpenSSH形式の公開鍵を標準出力に出力する

ssh-keygenの主なオプション(証明書関連)

短いオプション 意味
-s CA鍵 指定したCA鍵で公開鍵に署名をする
-I 秘密鍵 公開鍵に証明する際に使用する鍵を指定する
-h 鍵に署名する際、ユーザー証明書の代わりにホスト証明書を作成する
-D ライブラリ PKCS#11トークンのライブラリを指定し、公開鍵をダウンロードする(※1)
-n 名前 証明書に含めるユーザー名またはホスト名を指定する。名前は複数指定可能
-O オプション 鍵に署名する際に使用する証明書のオプションを指定する(詳細は「man ssh-keygen」の「CERTIFICATES」セクション参照)
-V 期間 証明書に署名する際の有効期間を指定する。「YYYYMMDD」または「YYYYMMDDHHMMSS」で期限切れとなる日時を指定するか、「:」で区切って「開始:終了」のように指定する。「+」「-」記号で期間を示すことも可能
-z シリアル番号 証明書に埋め込むシリアル番号を指定する
-L 証明書の内容を表示する
-k KRL(Key Revocation List、鍵失効リスト)ファイルを生成する(「-f」で出力ファイルを指定、「-u」を併用するとファイルに追加、「-s」でCA鍵のパス、「-z」でシリアル番号を指定)
-Q -fでKRLファイルを指定し、鍵がKRLで失効したものとして指定されているかを検査する(「-Q -f KRLファイル 対象ファイル」で実行)

※1 PKCS(Public-Key Cryptography Standards)は公開鍵暗号標準のグループ。PKCS#11はスマートカードなどのハードウェアデバイスを使用する認証サポートを提供する。



ssh-keygenの主なオプション(その他)

短いオプション 意味
-A ホスト鍵(/etc/ssh/ssh_host_key、/etc/ssh/ssh_host_dsa_key)を生成する(root権限が必要)
-l 公開鍵ファイルの指紋(fingerprint)を表示する
-B 公開鍵ファイルや秘密鍵ファイルのbubblebabbleダイジェストを表示する
-q メッセージを表示しない
-v 詳細なメッセージを表示


公開鍵と秘密鍵を作成する

 「ssh-keygen」を実行すると、対話式で公開鍵と秘密鍵を作成できます(画面1)。

画面1 画面1 公開鍵と秘密鍵を作成したところ

 まず、画面のメッセージに従い、鍵を保存するファイル名を指定します。デフォルトではホームディレクトリの「.ssh」ディレクトリ下に生成します。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。