Linux / コマンド / ssh-keygen - SSH キー ペアの生成とフィンガープリントの確認

ssh-keygenは、SSH認証に使用する秘密鍵と公開鍵のペアを作成し、フィンガープリントを確認します。秘密鍵は自分のコンピュータに安全に保管し、公開鍵のみをサーバーに登録します。

SSH(Secure Shell)の公開鍵認証では、クライアントが秘密鍵で署名し、サーバーが登録済みの公開鍵で検証します。秘密鍵がid_ed25519なら、公開鍵は通常id_ed25519.pubという別ファイルです。フィンガープリントは鍵をハッシュ値として表した識別情報で、鍵そのものではありません。パスフレーズは保存した秘密鍵を保護します。鍵の登録とサーバーのホストキー確認は別の操作です。

基本的な文法

ssh-keygen [オプション]

インストールされている実装とオプションは、配布版によって異なる場合があります。man ssh-keygenで現在のシステムの説明を確認してください。

使用例

Ed25519キーペアの作成

~/.sshがなければmkdir -p ~/.sshで作成し、Linuxではchmod 700 ~/.sshで自分だけがアクセスできるようにします。指定先の鍵が存在しないことを確認して実行し、表示される入力欄でパスフレーズを設定します。-Cのメール形式の文字列は識別用コメントで、ログイン名や認証先の指定ではありません。

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_work -C 'user@example.com'

公開鍵フィンガープリントの確認

サーバーに登録するキーが意図したキーかどうかを比較します。

ssh-keygen -lf ~/.ssh/id_ed25519_work.pub

秘密鍵から公開鍵を再生成

公開鍵ファイルを紛失したとき、秘密鍵を外部に公開せずに公開鍵を出力します。

ssh-keygen -y -f ~/.ssh/id_ed25519_work

作成したキーのフィンガープリントを確認する

キーを作成した後は公開鍵ファイルのフィンガープリントを照会して、サーバーに登録しようとしているキーが正しいか確認できます。実際のフィンガープリントはキーごとに固有です。

ssh-keygen -lf ~/.ssh/id_ed25519_work.pub

出力形式の例(フィンガープリントは省略した説明用の値です):

256 SHA256:... user@example.com (ED25519)

256は鍵のビット数、括弧内は種類です。生成すると例の秘密鍵と.pub付きの公開鍵ができます。公開鍵の登録はssh-copy-idによる公開鍵の登録を参照してください。秘密鍵は手元で保護し、sshの公開鍵認証に使用します。既存鍵を上書きすると、その鍵を使っていた接続を失う可能性があります。

主なオプションと形式

オプション・形式 説明
-t タイプ ed25519 など作成するキーの種類を指定します。
-f ファイル キーを保存または読み込むファイルを指定します。
-C 注釈 公開鍵に識別用のコメントを付けます。
-l 鍵ファイルのフィンガープリントを表示します。
-y 秘密鍵から公開鍵を出力します。
-p 既存の秘密鍵のパスフレーズを変更します。

使用する際の注意点

既存の鍵のパスを再利用すると、以前の公開鍵で接続していたサーバーにログインできない可能性があります。生成前に該当ファイルが存在するか確認し、上書き警告をお読みください。秘密鍵はメール・メッセンジャー・ウェブページにアップロードせず、権限とバックアップを管理してください。パスフレーズを失うと通常鍵を復元できないため、新しい鍵ペアを発行しサーバーの公開鍵を交換する必要があります。

よくある質問

サーバーにどのファイルをコピーすればよいですか?

拡張子が .pub の公開鍵のみ登録します。拡張子のない秘密鍵はローカルに保管してください。

公式ドキュメント

オプションの正確な動作や実装ごとの違いは、ssh-keygen 関連公式ドキュメントで確認できます。