EC2(Linux)のキーペアを失くした場合の対応

キーペアを失くしログインできなくなってしまった際に、EC2のパスワードリセット手順を行ったのでここに手順をまとめておきます。

Linuxの場合は、[こちらのRe:Post](https://repost.aws/ja/knowledge-center/user-data-replace-key-pair-ec2)の手順でキーペアの先作成を行うことができます。

#### 作業の流れ
①新しいキーペアの作成
②作成したキーペアのパブリックキー取得
③EC2の停止
④ユーザーデータの入力・保存
⑤EC2の起動・ログイン確認
⑥古いキーペア情報の削除

#### キーペア復旧作業
##### キーペアの新規作成
EC2のサービス画面を表示し、左メニューから「キーペア」を押下します。
右上の「キーペアを作成」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/3de80a45-f367-2a58-034c-bc2a0a3e9dc6.png)
キーペア作成画面が表示されます。
キーペア名を入力し、キーペアのタイプは「ED25519」を選択します。
ファイル形式を選択し、「キーペアを作成」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/c336cfe7-fcec-5d44-dc83-f947a49386c0.png)
キーペアは自動でダウンロードされます。
ダウンロードフォルダにキーペアのファイルがあることを確認しておきます。

##### パブリックキーの取得
画面左下の「CloudShell」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/86ef06c0-b8d5-902d-1833-b73a331bd1fc.png)

CloudShellが立ち上がったら下記コマンドを実行し、パブリックキーを取得します。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/f2acdffc-e911-1f7e-b952-7cbcb4faeddb.png)
aws ec2 describe-key-pairs --key-names キーペア名 --include-public-key

コマンドを実行すると、下記のような形で値が返ってきます。

    {
    "KeyPairs": [
        {
            "KeyPairId": "key-08850072a1e8ff3b0",
            "KeyType": "ed25519",
            "Tags": [],
            "PublicKey": "ssh-ed25519 AAAAC*******************************************************Ipb Linux_keypair_20241001\n",
            "CreateTime": "2024-10-01T06:13:56.143000+00:00",
            "KeyName": "Linux_keypair_20241001",
            "KeyFingerprint": "o****************DBw="
        }
    ]
}

実行結果の中の「PublicKey」の項目には、下記のような値が含まれています。

    "キーペアのキータイプ キーペアのPublicKey キーペア名"

PublicKey内の値のうち、キーペアのキータイプとキーペアのPublicKeyを控えておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/8d937b08-a8b8-24a2-bbf5-c485034f03c0.png)

上記画像の場合は、赤枠で囲った部分が該当の値となります。

#### インスタンスの停止
対象のインスタンスを停止しておきます。
インスタンス一覧から対象のインスタンスにチェックを入れ、「インスタンスを停止」を押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/4c874d3e-a030-e986-0912-dafbd5dcde43.png)
確認画面が表示されるため、「停止」を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/86f6a22f-f0ca-2e7e-8a76-5491b9e2ea59.png)

#### ユーザーデータを編集する
インスタンスが停止したら、ユーザーデータを編集します。
![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/6f943d71-3a37-4227-826f-0c61f387454c.png)
[こちらのRe:Post](https://repost.aws/ja/knowledge-center/user-data-replace-key-pair-ec2)を参考に、下記のようなスクリプトを貼り付けます。

    Content-Type: multipart/mixed; boundary="//"
    MIME-Version: 1.0
    
    --//
    Content-Type: text/cloud-config; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="cloud-config.txt"
    
    #cloud-config
    cloud_final_modules:
    - [users-groups, once]
    users:
      - name: ec2-user
        ssh-authorized-keys:
        - [先ほど確認したキーペアのタイプとキーペアのPublikKey]

「ssh-authorized-keys」の値には、前の手順で確認したキーペアのタイプとキーペアのパブリックキーを入力します。


#### インスタンスを再起動する
対象のインスタンスを再起動します。
インスタンス一覧から対象のインスタンスにチェックを入れ、「インスタンスを再起動」を押下します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/117c5179-7825-44da-856c-90336db48e65.png)

インスタンス再起動後も、コンソール上のキーペア名の表示は変わらないのでご注意ください。

![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/9a5dbf47-0f6d-4083-ab4d-94402b6d237d.png)

新規作成したキーペアにてログインできることを確認します。

![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/9d6e5a56-f999-4cfc-aaae-1747011887eb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/f17b9865-5b5b-4c06-8923-87ea42a0fa1a.png)

#### 紛失したキーペア情報の削除
EC2の中には、紛失したキーペアの情報が登録されている状態です。
下記コマンドを実行し、秘密鍵の情報が保存されているファイルを確認します。

    cat /home/ec2-user/.ssh/authorized_keys

![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/67937eb9-e85d-4102-b5b3-12e1e2965801.png)

古い方のキーペアの情報が残っているため、viエディタなどでファイルを開き、古い情報を削除しておきます。
EC2のコンソール上でも、古い方のキーペアは削除しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/72c2c8bf-4b24-48ba-b334-65baf895fb7d.png)

#### ユーザーデータの削除
再起動が完了し新しいキーペアでログインできることが確認出来たら、
ユーザーデータを削除しておくようにしましょう。

![{5DB2ECAB-E045-4E79-BEA6-90E21F38D16E}.tmp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2237429/19b6d3db-05d5-44d0-a40c-09a3f92586ce.png)

これで、今回ご紹介する手順は以上となります。ここまでお読みいただき