{EC2}プライベートキーを紛失した場合の Linux インスタンスへの接続

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ボリュームが残るので、削除する