在 EC2 執行個體上重設密碼和 SSH 金鑰 - AWS Systems Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 EC2 執行個體上重設密碼和 SSH 金鑰

您可以使用 AWSSupport-ResetAccess Runbook,以自動恢復在 Windows Server 的 Amazon Elastic Compute Cloud Amazon EC2 執行個體上產生本機管理員密碼,以及在 Linux 的 EC2 執行個體上產生新的 SSH 金鑰。AWSSupport-ResetAccessrunbook 旨在執行 AWS Systems Manager 動作、動作和功能的組合,這些 AWS Lambda 功能會自 AWS CloudFormation 動執行重設本機管理員密碼通常所需的步驟。

您可以使用自動化,功能 AWS Systems Manager,與 AWSSupport-ResetAccess runbook 來解決下列問題:

Windows

您遺失了 EC2 key pair:若要解決此問題,您可以使用 AWSSupport-ResetAccess runbook 從目前的執行個體建立啟用密碼的功能、AMI從 AMI 啟動新執行個體,然後選取您擁有的 key pair。

遺失本機管理員密碼:若要解決此問題,您可以使用 AWSSupport-ResetAccess Runbook 產生可藉由目前的 EC2 金鑰對解密的新密碼。

Linux

遺失 EC2 金鑰對,或遺失設定執行個體之 SSH 存取的金鑰:若要解決此問題,您可以使用 AWSSupport-ResetAccess Runbook 為目前的執行個體建立新的 SSH 金鑰,這可讓您再次連線至執行個體。

注意

如果您的適用於 Windows Server 的 EC2 執行個體是針對 Systems Manager 設定,您也可以使用 EC2Rescue 和 AWS Systems Manager Run Command 重設本機管理員密碼。如需詳細資訊,請參閱《Amazon EC2 Windows 執行個體使用者指南》中的搭配 Systems Manager Run Command 使用 EC2Rescue for Windows Server

相關資訊

《Linux 執行個體的 Amazon EC2 使用者指南》中的使用 PuTTY 從 Windows 連接至您的 Linux 執行個體

運作方式

使用 Automation 和 AWSSupport-ResetAccess Runbook 對執行個體進行故障診斷的運作方式如下:

  • 您要指定執行個體 ID 並執行 Runbook。

  • 系統會建立暫時 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 金鑰以 /ec2rl/openssh/instance ID/key 存放在 Systems Manager 參數存放區,您可用此金鑰 SSH 至執行個體。

開始之前

執行以下自動化之前,請先執行以下項目:

  • 複製您想要重設管理員密碼的執行個體之執行個體 ID。您會在程序中指定此 ID。

  • 或者,收集與無法連線之執行個體位於相同可用區域中的子網路 ID。EC2Rescue 執行個體會在此子網路中建立。如果您未指定子網路,則自動化會 VPC 您 AWS 帳戶的. 確認您至少 AWS 帳戶 有一個可用的 VPC。根據預設,您可以在一個區域中建立五個 VPC。如果您已經在區域中建立五個 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 受管政策,您還必須將 AmazonSSM AutomationRole 受管政策附加至該政策,以便您的執行個體可以與 Systems Manager API 進行通訊。

AWSSupport-ResetAccess 的 IAM 政策

帳戶 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 角色和政策的程序。藉由以下程序,使用 AWS CloudFormation為 EC2Rescue 自動化建立所需的 IAM 角色和政策。

為 EC2Rescue 建立所需的 IAM 角色和政策
  1. 下載 AWSSupport-EC2RescueRole.zip 並將 AWSSupport-EC2RescueRole.json 檔案解壓縮至本機電腦上的目錄。

  2. 如果您 AWS 帳戶 的分割區位於特殊分割區中,請編輯範本,將 ARN 值變更為分割區的值。

    例如,對於中國區域,將 arn:aws 的所有案例變更為 arn:aws-cn

  3. 請登入 AWS Management Console 並開啟 AWS CloudFormation 主控台,網址為 https://console.aws.amazon.com/cloudformation

  4. 選擇 Create stack (建立堆疊)With new resources (standard) (使用新資源 (標準))

  5. Create stack (建立堆疊) 頁面上,對於 Prerequisite - Prepare template (先決條件 - 準備範本),選擇 Template is ready (範本已準備就緒)

  6. 對於 Specify template (指定範本),選擇 Upload a template file (上傳範本檔案)

  7. 選擇 Choose file (選擇檔案),然後瀏覽並從您解壓縮檔案的目錄中選取 AWSSupport-EC2RescueRole.json 檔案。

  8. 選擇下一步

  9. Specify stack details (指定堆疊詳細資訊) 頁面上,對於 Stack name (堆疊名稱) 欄位,輸入識別此堆疊的名稱,然後選擇 Next (下一步)

  10. (選用) 在 Tags (標籤) 區域中將一個或多個標籤索引鍵名稱/值對套用到堆疊。

    標籤是您指派給資源的選用性中繼資料。標籤可讓您以不同的方式 (例如用途、擁有者或環境) 將資源分類。例如,您可能想要標記堆疊來識別其執行的任務類型、相關的目標類型或其他資源,以及其執行所在的環境。

  11. 選擇 Next (下一步)

  12. 在 [檢閱] 頁面上,檢閱堆疊詳細資料,然後向下捲動並選擇 [我確認 AWS CloudFormation 可能會建立 IAM 資源] 選項。

  13. AWS CloudFormation 顯示幾分鐘的「建立中 _ 進度」狀態。堆疊建立之後,狀態會變更為 CREATE_COMPLETE (CREATE_COMPLETE)。您也可以選擇重新整理圖示來檢查建立程序的狀態。

  14. 在堆疊清單中,選擇您剛建立堆疊旁的選項,然後選擇 Outputs (輸出) 標籤。

  15. 複製 Value (值)。這就是的 ARN。 AssumeRole您會在執行自動化時指定此 ARN。

執行自動化

下列程序說明如何使用 AWS Systems Manager 主控台來執行 AWSSupport-ResetAccess Runbook。

重要

以下自動化會停止執行個體。停止執行個體可能會導致已連接執行個體存放磁碟區上的資料遺失 (若有)。停止執行個體也可能會導致公有 IP 變更 (若無關聯的彈性 IP)。為了避免這些組態變更,請使用 Run Command 重設存取。如需詳細資訊,請參閱《Amazon EC2 Windows 執行個體使用者指南》中的搭配 Systems Manager Run Command 使用 EC2Rescue for Windows Server

若要執行 AWSSupport-ResetAccess 自動化
  1. 請在以下位置開啟 AWS Systems Manager 主控台。 https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Automation (自動化)。

    -或-

    如果 AWS Systems Manager 首頁先開啟,請選擇功能表圖示 ( 
    The menu icon
  ) 以開啟導覽窗格,然後選擇 [自動化]。

  3. 選擇 Execute automation (執行自動化)

  4. Automation document (自動化文件) 部分,從清單選擇 Owned by Amazon (由 Amazon 所有)

  5. 在 Runbook 清單中,選擇卡片中的按鈕 AWSSupport-ResetAccess,然後選擇 [下一步]。

  6. Execute automation document (執行自動化文件) 頁面上,選擇 Simple execution (簡易執行)

  7. Document details (文件詳細資訊) 部分,確認 Document version (文件版本) 設為最高的預設版本。例如,$DEFAULT3 (default) (3 (預設))

  8. Input parameters (輸入參數) 區段中,指定以下參數:

    1. 針對 InstanceID,指定無法連線之執行個體的 ID。

    2. 對於 SubnetId,在與您指定的執行個體位於相同可用區域中的現有 VPC 中指定子網路。根據預設,Systems Manager 會建立新的 VPC,但您也可以在現有 VPC 中指定子網路。

      注意

      如果您沒見到指定子網路 ID 的選項,請確認您使用的是 Runbook 最新的 Default (預設) 版本。

    3. 對於 EC2 RescueInstanceType,請指定 EC2Rescue 執行個體的執行個體類型。預設執行個體類型為 t2.medium

    4. 對於 AssumeRole,如果您使用本主題前面描述的 AWS CloudFormation 程序為此自動化建立角色,請指定您在主 AWS CloudFormation 控台中記下的 AssumeRole ARN。

  9. (選用) 在 Tags (標籤) 區域中,套用一個或多個標籤索引鍵名稱/值對以協助識別自動化,例如 Key=Purpose,Value=ResetAccess

  10. 選擇 Execute (執行)

  11. 若要監控自動化進度,請選擇執行中的自動化,接著選擇 Steps (步驟) 標籤。自動化結束時,選擇 Descriptions (描述) 標籤,接著選擇 View output (檢視輸出) 以檢視結果。若要檢視個別步驟的輸出,請選擇 Steps (步驟) 標籤,然後選擇步驟旁的 View Outputs (檢視輸出)

作為自動化的一部分,Runbook 會建立備份 AMI 和已啟用密碼的 AMI。其他所有由自動化建立的資源都會自動刪除,但此 AMIs 會保留於您的帳戶。這些 AMIs 使用以下慣例命名:

  • 備份 AMI:AWSSupport-EC2Rescue:InstanceID

  • 啟用密碼的 AMI: AWSSupport-EC2 救援:來自執行個體識別碼啟用密碼的 AMI

您可以搜尋自動化執行 ID 以找到這些 AMIs。

針對 Linux,執行個體的新 SSH 私密金鑰會加密儲存於 Parameter Store。參數名稱為 /ec2rl/openssh/instance ID/key