EC2インスタンスがパスワードまたは秘密鍵を忘れた場合、どうすればパスワードと秘密鍵をリセットできますか?
方法1:ユーザー情報を入力する
警告:このプロセスを開始する前に、次の点に注意してください。
- このプロセスでは、EC2インスタンスを停止して開始する必要があります。インスタンスストアボリュームのデータは失われることに注意してください。詳細については、「インスタンスのルートデバイスタイプの決定」を参照してください。インスタンスストレージボリュームに保存するすべてのデータを必ずバックアップしてください。
- インスタンスを停止して再起動すると、インスタンスのパブリックIPアドレスが変更されます。外部トラフィックをインスタンスにルーティングする場合、ベストプラクティスは、パブリックIPアドレスの代わりにエラスティックIPアドレスを使用することです。
-
新しいキーペアを作成します。
-
Amazon 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: username (用户名root/centos/ec2-user根据自己情况来)
ssh-authorized-keys:
- PublicKeypair(注意这里是直接填写完整的rsa-开头的公钥)
usernameをec2-userなどのユーザー名に置き換えます。デフォルトのユーザー名を入力できます。または、このインスタンスにカスタムユーザー名を以前に設定している場合は、このユーザー名を入力します。デフォルトのユーザー名のリストについては、インスタンスに接続するための一般的な前提条件を参照してください。
PublicKeypairを、手順2で取得した公開キーに置き換えます。ssh-rsaで始まる完全な公開鍵を必ず入力してください。
-
[保存]を選択します。
- cloud-initフェーズが完了したら、公開キーが置き換えられていることを確認します。
重要:スクリプトにはキーペアが含まれているため、スクリプトのユーザーデータフィールドを削除してください。
-
選択してアクションを、インスタンスの設定、および表示/変更するユーザーデータ。
-
[ユーザーデータの表示/変更]ダイアログボックスのすべてのテキストを削除し、[保存]を選択します。
- インスタンスを起動します。
注:例がAmazon Linux 2.0.20190618バージョン2以降の場合、EC2インスタンス接続を使用してインスタンスに接続できます。
方法2:AWS SystemsManagerを使用する
アクセスできないインスタンスがAWSSystems Managerに管理対象インスタンスとしてリストされている場合は、AWSSupport-ResetAccessドキュメントを使用して、キーペアが失われたシナリオから回復できます。この自動化されたドキュメントは、指定されたEC2インスタンス上のLinux用のEC2Rescueツールを使用して、新しいSSH(パブリック/プライベート)キーペアを自動的に生成して追加します。
インスタンスの新しいSSH秘密鍵は暗号化され、AWS SystemsManagerパラメータストアに保存されます。パラメータ名は/ ec2rl / openssh / instance_id / keyです。このパラメーターの値をコンテンツとして使用して、新しい.pemファイルを作成し、それを使用して、アクセスできないインスタンスに接続します。
注:自動化されたワークフローにより、バックアップとパスワード対応のAmazon Machine Image(AMI)が作成されます。新しいAMIは自動的に削除されませんが、アカウントには残ります。
これらのAMIを見つけるには:
-
Amazon EC2コンソールを開き、AMIを選択します。
- 検索フィールドに自動化実行IDを入力します。
上記の2つの方法を数回試しましたが、失敗しました。インスタンスがマネージドインスタンスではないため、方法2は使用できません。
上記のドキュメントの送信元アドレス:https://aws.amazon.com/cn/premiumsupport/knowledge-center/user-data-replace-key-pair-ec2/
方法3ディスク転送方法(私はこの方法をうまく使用しています。究極の方法である、誤ってsshポートを壁にしたiptablesもこの方法で解決できます)
- 実稼働環境はシステムディスクとデータディスクで区別され、データはデータディスクに保存されるため、操作性に余裕があります。
- ソースインスタンスからデータボリュームを切断します(スナップショットはここでも取得できます)
- ソースインスタンスのミラーイメージである新しいインスタンスを作成します(リージョン、セキュリティグループ、vpcサブネットを含み、キーペアは可能な限り一貫している必要があり、州は後で変更されます)
- 切断されたデータボリュームを新しいインスタンスに関連付けます
- 新しいインスタンスシステムにログインし、ボリュームをマウントすると、mysql、nginx、その他のデータを表示できるようになります。
- 必要なプログラムソフトウェアをインストールし、ソースインスタンスのバージョンとの整合性を保ち、環境を復元した後、ソースインスタンスのエラスティックIPを新しいインスタンスに再バインドします。