https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/replacing-lost-key-pair.html
-- 1. コマンド等のインストール
-- 1.1 aws cli version 2 インストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version
-- 2. テスト用EC2インスタンス(元のインスタンス)起動
aws ec2 run-instances \
--image-id ami-0404778e217f54308 \
--instance-type t3.nano \
--key-name key1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=instance01}]'
-- 3. 新しいキーペアを作成する
キーペアの作成
aws ec2 create-key-pair \
--key-name key20211225
キーペアの一覧
aws ec2 describe-key-pairs
-- 4. 元のインスタンスとそのルートボリュームに関する情報を取得する
aws ec2 describe-instances
インスタンスID i-11111111111111111
AMIID ami-0404778e217f54308
サブネットID subnet-11111111111111111
ルートボリュームのデバイス名 /dev/xvda
ボリューム ID vol-11111111111111111
-- 5. 元のインスタンスを停止する
aws ec2 stop-instances \
--instance-ids i-11111111111111111
-- 6. 一時インスタンスを起動する
元のインスタンスと同じ AMI を選択
元にインスタンスのアベイラビリティーゾーンのサブネットを指定
aws ec2 run-instances \
--image-id ami-0404778e217f54308 \
--instance-type t3.nano \
--key-name key20211225 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=Temporary}]' \
--subnet-id subnet-11111111111111111
-- 7. 元のインスタンスからルートボリュームをデタッチし、一時インスタンスにアタッチする
aws ec2 detach-volume \
--instance-id i-11111111111111111 \
--volume-id vol-11111111111111111
aws ec2 attach-volume \
--device /dev/sdf \
--instance-id i-22222222222222222 \
--volume-id vol-11111111111111111
-- 8. 一時インスタンスにマウントされた元のボリュームの authorized_keys に、新しいパブリックキーを追加する
一時インスタンスに接続して作業開始
lsblk
sudo mkdir /mnt/tempvol
sudo mount -o nouuid /dev/nvme1n1p1 /mnt/tempvol
cp ~ec2-user/.ssh/authorized_keys /mnt/tempvol/home/ec2-user/.ssh/authorized_keys
sudo ls -l /mnt/tempvol/home/ec2-user/.ssh
-- 9. 一時インスタンスから元のボリュームをアンマウントしてデタッチし、元のインスタンスに再アタッチする
sudo umount /mnt/tempvol
一時インスタンスでの作業終了
aws ec2 detach-volume \
--instance-id i-22222222222222222 \
--volume-id vol-11111111111111111
aws ec2 attach-volume \
--device /dev/xvda \
--instance-id i-11111111111111111 \
--volume-id vol-11111111111111111
-- 10. 新しいキーペアを使用して元のインスタンスに接続する
aws ec2 start-instances \
--instance-ids i-11111111111111111
-- 11. クリーンアップ
-- EC2インスタンスの削除
aws ec2 describe-instances
aws ec2 terminate-instances --instance-ids i-22222222222222222
aws ec2 terminate-instances --instance-ids i-11111111111111111
-- キーペアの削除
aws ec2 describe-key-pairs
aws ec2 delete-key-pair \
--key-name key20211225
★なぜかEBSボリュームが残るので、削除する