ssh-keygenの使い方|SSH鍵ペアの作成から運用まで徹底解説

ssh-keygenの使い方

ssh-keygenコマンドでSSH鍵を作成する方法を理解しよう

SSH公開鍵認証を利用するためには、まず鍵ペアを作成する必要があります。

LinuxやmacOS、WindowsのOpenSSH環境では、ssh-keygenコマンドを利用して簡単に鍵ペアを生成できます。

現在ではAWSやAzureなどのクラウド環境、GitHubへの接続、自動化ツールであるAnsibleなど、さまざまな場面でSSH鍵認証が利用されています。

そのため、ssh-keygenの使い方はLinux管理者やインフラエンジニアにとって必須の知識といえるでしょう。

本記事ではssh-keygenの基本的な使い方から、実務で利用するオプションや運用時の注意点まで詳しく解説します。

ssh-keygenとは

ssh-keygenはOpenSSHに含まれる鍵生成ツールです。

SSH公開鍵認証で利用する鍵ペアを作成できます。

主な用途は以下の通りです。

  • 公開鍵の作成
  • 秘密鍵の作成
  • パスフレーズ変更
  • 公開鍵抽出
  • フィンガープリント表示
  • ホスト鍵生成

SSH運用では非常に利用頻度の高いコマンドです。

利用できるか確認する

まずはインストール状況を確認します。

$ ssh-keygen -h

またはOpenSSHのバージョンを確認します。
$ ssh -V

OpenSSHが導入されていれば利用可能です。

最も基本的な鍵作成方法

現在推奨されているED25519形式で鍵を作成する場合は以下を実行します。

$ ssh-keygen -t ed25519

実行すると以下のようなメッセージが表示されます。
Generating public/private ed25519 key pair.
Enter file in which to save the key:

そのままEnterを押すと標準パスへ保存されます。

作成されるファイル

デフォルトでは以下のファイルが生成されます。

~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub

秘密鍵です。
id_ed25519

公開鍵です。
id_ed25519.pub

秘密鍵は絶対に他人へ渡してはいけません。

パスフレーズとは

鍵作成時には以下の入力を求められます。

Enter passphrase:

ここでパスフレーズを設定できます。

パスフレーズとは秘密鍵を保護するための追加パスワードです。

秘密鍵が盗まれた場合でも、不正利用されるリスクを低減できます。

RSA鍵を作成する方法

古い環境との互換性が必要な場合はRSAを利用します。

$ ssh-keygen -t rsa -b 4096

4096ビットのRSA鍵が生成されます。

現在はED25519が推奨されますが、RSAも依然として利用されています。

鍵の保存場所を指定する

保存場所を指定する場合は-fオプションを利用します。

$ ssh-keygen -t ed25519 -f ~/.ssh/server01_key

生成結果です。
server01_key
server01_key.pub

複数サーバを管理する場合によく利用されます。

コメントを付ける

鍵に識別用のコメントを付けられます。

$ ssh-keygen -t ed25519 -C "server01 admin"

公開鍵の末尾にコメントが追加されます。

運用管理がしやすくなります。

公開鍵の内容を確認する

公開鍵を表示するには以下を実行します。

cat ~/.ssh/id_ed25519.pub

例です。
ssh-ed25519 AAAAC3Nza...

この内容をサーバへ登録します。

公開鍵をサーバへ登録する

最も簡単な方法はssh-copy-idです。

$ ssh-copy-id user@server

公開鍵が自動的に以下へ登録されます。
~/.ssh/authorized_keys

公開鍵認証設定では頻繁に利用します。

フィンガープリントを確認する

鍵の識別情報を表示できます。

$ ssh-keygen -lf ~/.ssh/id_ed25519.pub

実行例です。

256 SHA256:xxxxxxxxxxxxx

サーバ登録時の確認に利用されます。

パスフレーズを変更する

既存の秘密鍵のパスフレーズを変更できます。

$ ssh-keygen -p -f ~/.ssh/id_ed25519

鍵を再作成する必要はありません。

公開鍵を再生成する

秘密鍵から公開鍵を作り直せます。

$ ssh-keygen -y -f ~/.ssh/id_ed25519

公開鍵を紛失した場合に利用できます。

SSHエージェントと組み合わせる

パスフレーズ付き鍵を利用する場合はssh-agentが便利です。

エージェントを起動します。

$ eval $(ssh-agent)

鍵を登録します。
ssh-add ~/.ssh/id_ed25519

以後はパスフレーズ入力を省略できます。

実務で推奨される鍵作成例

現在の企業環境で推奨される例です。

$ ssh-keygen -t ed25519 -a 100 -C "admin@example.com"

オプションの意味です。

  • -t ed25519 → 鍵方式指定
  • -a 100 → 鍵導出処理強化
  • -C → コメント追加

高い安全性を実現できます。

よくあるトラブル

Permission denied (publickey)

主な原因です。

  • 公開鍵未登録
  • 秘密鍵指定ミス
  • authorized_keys設定ミス
  • パーミッション異常

Bad permissions

秘密鍵の権限が緩すぎる場合に発生します。

修正します。

$ chmod 600 ~/.ssh/id_ed25519

実務での活用例

ssh-keygenは以下の場面で利用されています。

  • Linuxサーバ管理
  • AWS EC2接続
  • Azure Linux VM接続
  • GitHub認証
  • Ansible自動化
  • CI/CD環境
  • バックアップサーバ接続

Linux管理者にとって必須のコマンドといえるでしょう。

まとめ

ssh-keygenはSSH公開鍵認証の基盤となる重要なコマンドです。

現在はED25519形式が推奨されており、公開鍵と秘密鍵を生成して安全な認証を実現できます。

実務では公開鍵登録、フィンガープリント確認、パスフレーズ管理などの知識も必要になります。

SSH運用の第一歩として、まずはssh-keygenで鍵を作成し、公開鍵認証を体験してみることをおすすめします。