Home
1042 words
5 minutes
【Unix】ssh-keygenコマンドの解説
2025-02-22

最終更新:2025-02-22

ssh-keygenコマンドは、SSHプロトコルでの公開鍵認証に用いる鍵ペア(秘密鍵と公開鍵)を生成・管理するためのツールである。

これにより、セキュアなリモートログインや通信が可能となる。

鍵の生成のみならず、既存の鍵の変換・署名、フィンガープリントの表示など多様な機能を備えている。

主なオプションの詳細#

以下、ssh-keygenが提供する代表的なオプションについて、具体的な説明を行う。

  • -t type
    鍵の種類を指定するオプションである。

    • 指定例:
      • rsa:RSAアルゴリズム。デフォルトで広く用いられる。
      • dsa:DSAアルゴリズム。(ただし、セキュリティ上の理由から非推奨)
      • ecdsa:楕円曲線DSA。
      • ed25519:高セキュリティ、高速なED25519。
    • 例: ssh-keygen -t ed25519
  • -b bits
    鍵のビット長を指定するオプションである。主にRSA鍵で用いられ、数字で長さを指定する。

    • 例: ssh-keygen -t rsa -b 4096 は、4096ビットのRSA鍵を生成する。
  • -C comment
    鍵にコメントを付加するオプションである。通常、ユーザー名やメールアドレス等を記述する。

    • 例: ssh-keygen -t rsa -b 4096 -C "user@example.com"
  • -f filename
    鍵ファイルの出力先およびファイル名を指定する。出力先フォルダが存在する必要がある。

    • 例: ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_custom
  • -N new_passphrase
    鍵の秘密鍵に付与するパスフレーズを指定する。空文字を指定することでパスフレーズなしで生成することも可能である。

    • 例: ssh-keygen -t ed25519 -N "my_secure_passphrase"
  • -q
    静かな(quiet)モードで動作させるオプションである。生成時の詳細なメッセージを抑制する。

  • -E fingerprint_hash
    鍵のフィンガープリントを表示する際に使用するハッシュアルゴリズムを指定する。

    • 指定例:
      • md5:MD5ハッシュ(従来の表示形式)。
      • sha256:SHA256ハッシュ(現代的な推奨形式)。
    • 例: ssh-keygen -l -E sha256 -f ~/.ssh/id_rsa.pub
  • -y
    既存の秘密鍵ファイルから公開鍵を抽出して表示する。すでに生成された秘密鍵から公開鍵の内容を取得する際に有用である。

    • 例: ssh-keygen -y -f ~/.ssh/id_rsa
  • -P old_passphrase
    秘密鍵のパスフレーズを再指定するためのオプションである。主にパスフレーズ変更作業時に用いられる。

ハンズオン#

以下に、具体的な使用例と操作手順を示す。

1. デフォルトの鍵ペアの生成#

最も基本的な使用方法は、単にssh-keygenと入力することである。
この場合、対話形式で以下の手順が実施される。

  1. 鍵の保存先(デフォルトは ~/.ssh/id_rsa )の確認。
  2. パスフレーズの入力・確認を求められる(セキュリティ向上のため、パスフレーズの設定が推奨される)。
ssh-keygen

2. ED25519鍵の生成#

セキュリティとパフォーマンスを兼ね備えたED25519アルゴリズムを用いて鍵ペアを生成する例である。

ssh-keygen -t ed25519 -C "user@example.com"

この例では、-t ed25519により鍵の種類をED25519に指定し、-Cで鍵にコメントを付加している。

3. 4096ビットのRSA鍵の生成とカスタムファイル名の指定#

RSA鍵をより強固な4096ビットで生成し、生成されるファイル名をカスタマイズする例である。

ssh-keygen -t rsa -b 4096 -C "user@example.com" -f ~/.ssh/id_rsa_custom

この例では、-b 4096によりビット長を指定し、-fで出力ファイル名を自前のものに変更している。

4. パスフレーズ付きの鍵生成#

生成される秘密鍵に、特定のパスフレーズを設定する場合である。
なお、実際の運用ではパスフレーズの入力を対話で行うのが一般的だが、ここでは自動化の例として示す。

ssh-keygen -t ed25519 -C "user@example.com" -N "my_secure_passphrase"

この場合、-Nオプションによって新たなパスフレーズが明示的に指定される。

5. 既存の秘密鍵から公開鍵を抽出する#

既に存在する秘密鍵から、公開鍵を再生成して表示する場合は以下のように行う。

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

この操作により、秘密鍵から対応する公開鍵が標準出力に表示される。

6. 鍵のフィンガープリントの確認#

生成された公開鍵ファイルのフィンガープリントをSHA256形式で確認する例である。

ssh-keygen -l -E sha256 -f ~/.ssh/id_rsa_custom.pub

この例では、-lによってフィンガープリントを表示し、-E sha256によりハッシュアルゴリズムとしてSHA256を指定している。

【Unix】ssh-keygenコマンドの解説
https://ss0832.github.io/posts/20250222_ssh-keygen_command_guide/
Author
ss0832
Published at
2025-02-22