はじめに
背景
この文書は、AWSのEC2インスタンスで使うキーペア(公開鍵と秘密鍵)に関する説明と、秘密鍵ファイルを紛失した場合の対処法をやさしくまとめたものです。AWSではインスタンスにログインする際にこの秘密鍵を使います。秘密鍵は作成時に一度だけダウンロードできる仕様です。再ダウンロードはできません。
目的
ここでは、秘密鍵を再取得できない理由をわかりやすく説明し、紛失したときに取るべき手順の概要を提示します。具体的な復旧手順や注意点は以降の章で順を追って説明します。
対象読者
- 秘密鍵を紛失して不安な方
- これからキーペア管理を見直したい方
- AWSの基本操作に慣れているが復旧手順を知りたい方
本書の流れ
第2章でダウンロード不可の理由を説明し、第3章以降で復旧方法、新しいキーペアの作成手順、注意点、コマンド例、よくある質問を順に解説します。安心して読み進めてください。
AWSキーペアの再ダウンロードはできない
要点
- EC2用キーペア(.pemなど)の秘密鍵は、作成直後に一度だけダウンロードできます。
- 作成後はAWSマネジメントコンソールやCLIから秘密鍵を再ダウンロードできません。
なぜ再ダウンロードできないのか
AWSは秘密鍵を保存しません。公開鍵のみを保持する設計です。これにより秘密鍵の漏えいリスクを減らしますが、ユーザー側での管理が必須になります。
実務上の注意点(具体例つき)
- 必ず作成直後に安全な場所へ保管してください。例:暗号化したUSBメモリ、信頼できるパスワードマネージャー。
- ファイル権限を適切に設定します(Linuxではchmod 400など)。これで不正アクセスを防げます。
- メールや公開リポジトリに平文で置かないでください。誤って公開すると復旧が面倒になります。
- バックアップを複数用意すると安心です。別の物理メディアや会社の安全なストレージに保管する方法が有効です。
もし失くしたら
後から同じ秘密鍵を取り戻す手段はありません。次の章で、紛失時に行う一般的な復旧方法を詳しく説明します。
キーペアを紛失した場合の一般的な復旧方法
秘密鍵を失うと同じ鍵の再取得はできませんが、インスタンスへのアクセスは別の方法で復旧できます。基本は新しいキーペアを作り、その公開鍵をインスタンス側のauthorized_keysに登録することです。代表的な3つのアプローチを説明します。
1) 別のユーザでログインしてauthorized_keysに追記
他のログイン可能なアカウント(管理者や別の鍵を持つユーザ)がある場合、そのユーザで接続してtargetユーザの~/.ssh/authorized_keysに新しい公開鍵を追記します。手順は簡単です:SSHで接続→echoで追記→所有者とパーミッションを正しく設定。ファイルを上書きしないように注意してください。
2) ユーザーデータを使って起動時に登録
EC2のユーザーデータに登録スクリプトを書き、インスタンスを再起動するとスクリプトが実行され公開鍵を追加できます。例:
!/bin/bash
mkdir -p /home/ec2-user/.ssh
echo ‘ssh-rsa AAAA…’ >> /home/ec2-user/.ssh/authorized_keys
chown -R ec2-user:ec2-user /home/ec2-user/.ssh
chmod 600 /home/ec2-user/.ssh/authorized_keys
OSやcloud-initの設定によって挙動が異なるため、事前に確認してください。
3) EBSボリュームを別インスタンスに接続して手動追加
ルートボリュームを停止して切り離し、復旧用のインスタンスにアタッチします。マウントして対象ユーザのauthorized_keysを編集し、アンマウントして元に戻します。作業前にスナップショットを取り、ファイルシステムの整合性に注意してください。
どの方法を選ぶかは状況次第です。他にログイン手段があれば1)、再起動が許容されるなら2)、安全性や確実さを優先するなら3)が向きます。各手順で所有者とパーミッションを必ず確認してください。
新しいキーペアの作成・公開鍵の生成手順
概要
AWSコンソールで新しいキーペアを作成し、ダウンロードした秘密鍵から公開鍵を作ります。ここではコンソール操作と、Linux/Mac(ssh-keygen)やWindows(PuTTY)の手順をわかりやすく説明します。
1. AWSコンソールでキーペアを作成
- EC2コンソールに移動し、左メニューの「ネットワークとセキュリティ」→「キーペア」を選択します。
- 「キーペアの作成」をクリックし、名前を入力します。キーのタイプは互換性重視ならRSAを選ぶと無難です。
- ファイル形式を選びます(一般的にはPEM)。作成すると秘密鍵ファイルが1回だけダウンロード可能です。
2. 秘密鍵の保存と権限設定
ダウンロードしたファイルを安全な場所に置き、パーミッションを制限します(Linux/Mac例)。
chmod 600 mykey.pem
秘密鍵は第三者と共有しないでください。
3. Linux/Macで公開鍵を生成
既にある秘密鍵から公開鍵を作るには次を実行します。
ssh-keygen -y -f mykey.pem > mykey.pub
これで mykey.pub に公開鍵が出力されます。中身は一行で始まりは “ssh-rsa” などです。
4. Windows(PuTTY)の場合
PEMをPuTTYのPPKに変換するにはPuTTYgenを使います。PuTTYgenでPEMを読み込み「Save private key」でPPKを保存します。公開鍵は画面のテキストをコピーして保存します。
5. インスタンスへの公開鍵登録(代表例)
- 既存のインスタンスに追加するには、インスタンス内のユーザーの~/.ssh/authorized_keysに公開鍵を追記します。
- SSHで接続できない場合は、Systems Managerや一時的なユーザーデータ、またはEC2 Instance Connectを使って配置します。
6. 注意点
- 秘密鍵は必ず安全に保管してください。
- 公開鍵はテキストで扱えるため、インスタンス側に追加すれば複数で共有できます。
- ファイル形式(PEM/PPK)に注意し、利用するクライアントに合わせて変換してください。
復旧時の注意点
前提の確認
- コンソールやIAMの権限があることをまず確認します。権限不足だと復旧作業が進みません。
復旧方法別の注意点
- 新しいキーペア+公開鍵配置: 既存のインスタンスに公開鍵を置けない場合、rootボリュームのEBS差し替えやユーザーデータを使ったスクリプト実行が必要です。差し替え時はファイルシステムの整合性とマウント先に注意してください。
- EBS差し替え: 元のインスタンスを停止してボリュームをデタッチ、別の修復用インスタンスにアタッチして公開鍵を追加します。操作前にスナップショットを取り、ボリュームIDを正確に扱ってください。
- Systems Manager(SSM): SSMを使うには事前にSSM Agentと適切なIAMロールが必要です。事前準備が無かった場合は利用できません。
ネットワークとセキュリティの注意
- セキュリティグループとNACLがSSH接続を遮断していないか確認します。IP制限が厳しい場合は一時的に緩和して作業してください。
- キー以外の認証(パスワード認証など)が無効化されているか確認し、必要なら作業後に元に戻します。
秘密鍵の管理と運用対策
- 秘密鍵は暗号化して複数箇所に保管します。例: ローカルの安全なディレクトリ、社内の秘密管理ツール、オフラインのバックアップ。
- 定期的に鍵をローテーションし、不要になった公開鍵はインスタンスから削除してください。
テストと事後対応
- 復旧後は必ずSSH接続をテストします。動作確認が取れたら作業ログとスナップショットを保存します。
- 誤って漏洩した可能性がある場合は該当鍵を無効化し、新しい鍵に切り替えてください。
参考コマンド・設定例
公開鍵の確認
- 公開鍵は取得できます。例:
aws ec2 describe-key-pairs --key-name MyKey --query 'KeyPairs[].PublicKey' --output text
- 秘密鍵は再取得できません。紛失時は新しい鍵を用意してください。
ローカルで鍵を作る・AWSへ登録する
ssh-keygen -t rsa -b 4096 -f mykey
aws ec2 import-key-pair --key-name mykey --public-key-material fileb://mykey.pub
User Data(cloud-config)例:再起動時に公開鍵を登録
#cloud-config
write_files:
- path: /var/lib/cloud/scripts/per-boot/add_ssh_key.sh
permissions: '0755'
owner: root:root
content: |
#!/bin/bash
mkdir -p /home/ec2-user/.ssh
echo 'ssh-rsa AAAA... your-key-comment' >> /home/ec2-user/.ssh/authorized_keys
chown -R ec2-user:ec2-user /home/ec2-user/.ssh
chmod 700 /home/ec2-user/.ssh
chmod 600 /home/ec2-user/.ssh/authorized_keys
- このスクリプトはインスタンス起動・再起動のたびに実行され、新しい公開鍵をauthorized_keysに追記します。
インスタンス上で手動追加する例
echo 'ssh-rsa AAAA... your-key-comment' >> /home/ec2-user/.ssh/authorized_keys
chown ec2-user:ec2-user /home/ec2-user/.ssh/authorized_keys
chmod 600 /home/ec2-user/.ssh/authorized_keys
注意点:公開鍵の重複やファイル権限に注意してください。cloud-configは初期化の種類やAMIによって挙動が異なります。
よくある質問
以下は、キーペア(.pem/.ppk)に関するよくある質問と簡潔な回答です。誰でも分かるよう具体例を交えて説明します。
-
Q: .pemファイルは再ダウンロードできますか?
A: いいえ。一度作成した.pemは後から再ダウンロードできません。紛失した場合は復旧手順で新しい公開鍵をインスタンスに登録します。 -
Q: 秘密鍵をなくしたら本当にアクセスできるようになりますか?
A: はい。ただしインスタンスへのスナップショットやボリューム操作、別の救助用インスタンスを使った公開鍵の追加など、手順を正しく行う必要があります。 -
Q: Windowsで使う.ppkはどう作りますか?
A: PuTTYを使う場合、PuTTYgenで.pemを読み込み、.ppkで保存します。例:PuTTYgen→Load→.pem選択→Save private key。 -
Q: 復旧に管理者権限は必要ですか?
A: はい。インスタンスの停止やボリュームの操作、別インスタンスへのアタッチなどはアカウントの権限が必要です。 -
Q: セキュリティ上の注意点は?
A: 秘密鍵は安全な場所に保管してください。共有やメール添付は避け、必要なら定期的に鍵を作り直してください。 -
Q: 復旧後の確認方法は?
A: 新しい秘密鍵でSSHまたはPuTTY接続を試し、問題なければ古い鍵の無効化やログ監視で不正アクセスがないか確認します。












