EC2 インスタンスでのパスワードと SSH キーのリセット - AWS Systems Manager

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

EC2 インスタンスでのパスワードと SSH キーのリセット

AWSSupport-ResetAccess ランブックを使用して、Windows Server 用の Amazon Elastic Compute Cloud Amazon EC2 インスタンスでローカル管理者パスワード生成を自動的に再有効化し、Linux 用の EC2 インスタンスで新しい SSH キーを生成できます。AWSSupport-ResetAccess ランブックは、ローカル管理者パスワードのリセットに通常必要なステップを自動化する AWS Systems Manager アクション、 AWS CloudFormation アクション、および AWS Lambda 関数の組み合わせを実行するように設計されています。

の一機能である Automation と AWSSupport-ResetAccessランブックを使用すると AWS Systems Manager、次の問題を解決できます。

Windows

EC2 キーペアを紛失した場合: この問題を解決するには、 AWSSupport-ResetAccess ランブックを使用して、現在のインスタンスAMIからパスワード対応の を作成し、AMI から新しいインスタンスを起動して、所有するキーペアを選択します。

ローカル管理者パスワードを紛失した場合: この問題を解決するには、AWSSupport-ResetAccess ランブックを使用して、現在の EC2 キーペアで復号できる新しいパスワードを生成できます。

Linux

EC2 キーペアを紛失したか、インスタンスへの SSH アクセスを設定したキーを紛失した場合: この問題を解決するには、AWSSupport-ResetAccess ランブックを使用し、現在のインスタンス用に新しい SSH キーを作成することで、インスタンスに再接続できます。

注記

Windows Server の EC2 インスタンスが Systems Manager 用に設定されている場合、EC2Rescue と AWS Systems Manager Run Command を使用してローカル管理者パスワードをリセットすることもできます。詳細については、Windows インスタンス用の Amazon EC2 ユーザーガイドの「EC2Rescue for Windows Server を Systems Manager の Run Command で使用する」を参照してください。

関連情報

「Amazon EC2 Linux インスタンス用ユーザーガイド」の「PuTTY を使用した Windows から Linux インスタンスへの接続

仕組み

Automation と AWSSupport-ResetAccess ランブックによるインスタンスのトラブルシューティングは、次のように機能します。

  • インスタンスの ID を指定して、ランブックを実行します。

  • システムは一時 VPC を作成し、一連の Lambda 関数を実行して VPC を設定します。

  • システムは元のインスタンスと同じアベイラビリティーゾーン内で一時 VPC のサブネットを識別します。

  • システムは一時的な、SSM を有効にした ヘルパーインスタンスを起動します。

  • システムは元のインスタンスを停止して、バックアップを作成します。次に、元のルートボリュームをヘルパーインスタンスにアタッチします。

  • システムは、Run Command を使用してヘルパーインスタンスで EC2Rescue を実行します。Windows の場合、EC2Rescue は、アタッチされた元のルートボリュームで EC2Config または EC2Launch を使用することで、ローカル管理者のパスワード生成を有効にします。Linux の場合、EC2Rescue は新しい SSH キーを生成して挿入し、プライベートキーで暗号化して Parameter Store に保存します。完了すると、EC2Rescue は元のインスタンスにルートボリュームを再アタッチします。

  • パスワード生成が有効になっているため、システムはインスタンスの新しい Amazon Machine Image (AMI) を作成します。この AMI を使用して新しい EC2 インスタンスを作成し、必要に応じて新しいキーペアを関連付けます。

  • システムは元のインスタンスを再起動して、一時インスタンスを削除します。また、一時 VPC と、自動化の開始時に作成された Lambda 関数を削除します。

  • Windows: インスタンスでは、それに割り当てられている現在のキーペアを使用して Amazon EC2 コンソールから復号できる新しいパスワードを生成します。

    Linux: SSH を通じてインスタンスと通信できます。これには、Systems Manager Parameter Store に保存されている SSH キー (/ec2rl/openssh/instance ID/key) を使用します。

開始する前に

次の自動化を実行する前に、以下の操作を行います。

  • 管理者パスワードをリセットするインスタンスのインスタンス ID をコピーします。この ID は次の手順で指定します。

  • オプションとして、到達不可能なインスタンスと同じアベイラビリティーゾーンのサブネットの ID を収集します。このサブネットに EC2Rescue インスタンスが作成されます。サブネットを指定しない場合、自動化は に新しい一時 VPC を作成します AWS アカウント。に少なくとも 1 つの VPC AWS アカウント が使用可能であることを確認します。デフォルトでは、リージョンで最大 5 つの VPC を作成できます。リージョンですでに 5 つの VPC を作成した場合、自動化は失敗し、インスタンスへの変更は行われません。Amazon VPC クォータの詳細については、「Amazon VPC ユーザーガイド」の「VPC とサブネット」を参照してください。

  • オプションで、オートメーション用の AWS Identity and Access Management (IAM) ロールを作成して指定できます。このロールを指定しない場合、自動化はそれを実行したユーザーのコンテキストで実行されます。

インスタンスでアクションを実行するためのアクセス許可を AWSSupport-EC2Rescue に付与する

EC2Rescue では、オートメーション中にインスタンスで一連のアクションを実行するためのアクセス許可が必要です。これらのアクションは AWS Lambda、、IAM、および Amazon EC2 サービスを呼び出して、インスタンスの問題を安全かつ安全に修正しようとします。 AWS アカウント および/または VPC に管理者レベルのアクセス許可がある場合は、このセクションで説明するように、アクセス許可を設定せずにオートメーションを実行できる場合があります。管理者レベルのアクセス許可がない場合は、ユーザーまたは管理者が、次のいずれかのオプションを使用してアクセス許可を設定する必要があります。

IAM ポリシーを使用したアクセス許可の付与

次の IAM ポリシーをユーザー、グループ、ロールにインラインポリシーとしてアタッチするか、新しい IAM マネージドポリシーを作成し、ユーザー、グループ、ロールにアタッチできます。ユーザー、グループ、ロールへのインラインポリシーの追加の詳細については、「インラインポリシーの使用」を参照してください。新しい管理ポリシーの作成の詳細については、「管理ポリシーの使用」を参照してください。

注記

新しい IAM 管理ポリシーを作成する場合は、インスタンスが Systems Manager API と通信できるように、AmazonSSMAutomationRole 管理ポリシーもアタッチする必要があります。

AWSSupport-ResetAccess の IAM ポリシー

[Account ID] (アカウント ID) をユーザー自身の情報に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction", "lambda:DeleteFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:account ID:function:AWSSupport-EC2Rescue-*", "Effect": "Allow" }, { "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::awssupport-ssm.*/*.template", "arn:aws:s3:::awssupport-ssm.*/*.zip" ], "Effect": "Allow" }, { "Action": [ "iam:CreateRole", "iam:CreateInstanceProfile", "iam:GetRole", "iam:GetInstanceProfile", "iam:PutRolePolicy", "iam:DetachRolePolicy", "iam:AttachRolePolicy", "iam:PassRole", "iam:AddRoleToInstanceProfile", "iam:RemoveRoleFromInstanceProfile", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DeleteInstanceProfile" ], "Resource": [ "arn:aws:iam::account ID:role/AWSSupport-EC2Rescue-*", "arn:aws:iam::account ID:instance-profile/AWSSupport-EC2Rescue-*" ], "Effect": "Allow" }, { "Action": [ "lambda:CreateFunction", "ec2:CreateVpc", "ec2:ModifyVpcAttribute", "ec2:DeleteVpc", "ec2:CreateInternetGateway", "ec2:AttachInternetGateway", "ec2:DetachInternetGateway", "ec2:DeleteInternetGateway", "ec2:CreateSubnet", "ec2:DeleteSubnet", "ec2:CreateRoute", "ec2:DeleteRoute", "ec2:CreateRouteTable", "ec2:AssociateRouteTable", "ec2:DisassociateRouteTable", "ec2:DeleteRouteTable", "ec2:CreateVpcEndpoint", "ec2:DeleteVpcEndpoints", "ec2:ModifyVpcEndpoint", "ec2:Describe*" ], "Resource": "*", "Effect": "Allow" } ] }

AWS CloudFormation テンプレートを使用したアクセス許可の付与

AWS CloudFormation は、事前設定されたテンプレートを使用して IAM ロールとポリシーを作成するプロセスを自動化します。 を使用して、EC2Rescue の Automation に必要な IAM ロールとポリシーを作成するには、次の手順を使用します AWS CloudFormation

EC2Rescue に必要な IAM ロールとポリシーを作成するには
  1. AWSSupport-EC2RescueRole.zip をダウンロードし、AWSSupport-EC2RescueRole.json ファイルをローカルマシン上のディレクトリに展開します。

  2. AWS アカウント が特別なパーティションにある場合は、テンプレートを編集して ARN 値をパーティションの値に変更します。

    例えば、中国リージョンの場合は、arn:aws のすべてのケースを arn:aws-cn に変更します。

  3. にサインイン AWS Management Console し、https://console.aws.amazon.com/cloudformation で AWS CloudFormation コンソールを開きます。

  4. [スタックの作成] を選択し、[新しいリソースの使用 (標準)] を選択します。

  5. [スタックの作成] ページの [前提条件 - テンプレートの準備] で、[テンプレートの準備完了] を選択します。

  6. [テンプレートの指定] で、[テンプレートファイルのアップロード] を選択します。

  7. [ファイルを選択] を選択し、展開したディレクトリから AWSSupport-EC2RescueRole.json ファイルを参照して選択します。

  8. [次へ] を選択します。

  9. [スタックの詳細の指定] ページの [スタック名] フィールドに、このスタックを識別する名前を入力し、[次へ] を選択します。

  10. (オプション) [タグ] 領域で、1 つ以上のタグキーの名前と値のペアをスタックに適用します。

    タグは、リソースに割り当てるオプションのメタデータです。タグを使用すると、目的、所有者、環境などのさまざまな方法でリソースを分類できます。たとえば、スタックにタグを付けると、スタックが実行するタスクのタイプ、関連するターゲットまたはその他のリソースのタイプ、およびスタックが実行される環境を識別できます。

  11. [次へ] を選択します。

  12. レビューページで、スタックの詳細を確認し、下にスクロールして、IAM リソースを作成する AWS CloudFormation 可能性のある I 確認 オプションを選択します。

  13. AWS CloudFormation は、CREATE_IN_PROGRESS のステータスを数分表示します。スタックを作成すると、ステータスは [CREATE_COMPLETE] に変わります。更新アイコンを選択して、作成プロセスのステータスを確認することもできます。

  14. スタックリストで、先ほど作成したスタックの横にあるオプションを選択し、[Outputs] タブを選択します。

  15. [Value] をコピーします。は の ARN です AssumeRole。自動化を実行するときに、この ARN を指定します。

自動化の実行

次の手順では、 AWS Systems Manager コンソールを使用して AWSSupport-ResetAccess ランブックを実行する方法について説明します。

重要

次のオートメーションではインスタンスを停止します。インスタンスを停止すると、アタッチされたインスタンスストアボリュームのデータが失われます (存在する場合)。また、インスタンスを停止すると、Elastic IP が関連付けられていない場合、そのパブリック IP アドレスも変更されます。これらの設定変更を避けるには、Run Command を使用してアクセスをリセットします。詳細については、Windows インスタンス用の Amazon EC2 ユーザーガイドの「EC2Rescue for Windows Server を Systems Manager の Run Command で使用する」を参照してください。

AWSSupport-ResetAccess Automation を実行するには
  1. https://console.aws.amazon.com/systems-manager/ で AWS Systems Manager コンソールを開きます。

  2. ナビゲーションペインで [オートメーション] を選択します。

    -または-

    AWS Systems Manager ホームページが最初に開いたら、メニューアイコン (      The menu icon   ) を選択してナビゲーションペインを開き、オートメーション を選択します。

  3. [オートメーションを実行] を選択します。

  4. オートメーションドキュメント] セクションで、リストから [Amazon が所有] を選択します。

  5. ランブックリストで、AWSSupport-ResetAccess のカードのボタンを選択し、次にへを選択します。

  6. [オートメーションドキュメントの実行] ページで、[シンプルな実行] を選択します。

  7. [ドキュメント詳細] セクションで、[ドキュメントバージョン] が最大のデフォルトバージョンに設定されていることを確認します。例えば、[$DEFAULT] または [3 (デフォルト)] のように指定します。

  8. [Input parameters] セクションで、以下のパラメータを指定します。

    1. [InstanceID] で、到達不可能なインスタンスの ID を指定します。

    2. にはSubnetId、指定したインスタンスと同じアベイラビリティーゾーンの既存の VPC のサブネットを指定します。デフォルトでは、Systems Manager によって新しい VPC が作成されますが、必要に応じて既存の VPC のサブネットを指定できます。

      注記

      サブネット ID を指定するオプションが表示されない場合は、最新のデフォルトバージョンのランブックを使用していることを確認します。

    3. EC2RescueInstanceType には、EC2Rescue インスタンスのインスタンスタイプを指定します。デフォルトのインスタンスタイプは t2.medium です。

    4. の場合AssumeRole、このトピックで前述した AWS CloudFormation 手順を使用してこのオートメーションのロールを作成した場合は、 AWS CloudFormation コンソールでメモした AssumeRole ARN を指定します。

  9. (オプション) [タグ] 領域で、オートメーションを識別するためにタグキーの名前と値のペアを 1 つ以上適用します (例: Key=Purpose,Value=ResetAccess)。

  10. [Execute] を選択します。

  11. オートメーションの進捗をモニタリングするには、実行中のオートメーションを選択し、[Steps] タブを選択します。オートメーションが終了したら、[Descriptions] タブを選択し、[View output] を選択して結果を表示します。個別のステップの出力を表示するには、[Steps] タブを選択し、ステップの横にある [View Outputs] を選択します。

ランブックは、オートメーションの一環としてバックアップ AMI とパスワード対応の AMI を作成します。オートメーションで作成された他のすべてのリソースは自動的に削除されますが、これらの AMIs はアカウントに残ります。AMIs の名前は次の命名規則に従います。

  • バックアップ AMI: AWSSupport-EC2Rescue:InstanceID

  • パスワード対応 AMI: AWSSupport-EC2Rescue : インスタンス ID からのパスワード対応 AMI

これらの AMIs は、Automation の実行 ID で検索することで見つけることができます。

Linux の場合、インスタンスの新しい SSH プライベートキーは暗号化されて Parameter Store に保存されます。パラメータ名は /ec2rl/openssh/instance ID/key です。