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

目次
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 -VOpenSSHが導入されていれば利用可能です。
最も基本的な鍵作成方法
現在推奨されている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 40964096ビットの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で鍵を作成し、公開鍵認証を体験してみることをおすすめします。





