本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 EC2 執行個體上重設密碼和 SSH 金鑰
您可以使用 AWSSupport-ResetAccess
執行手冊來自動恢復在 Windows Server 的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上產生本機管理員密碼,以及在 Linux EC2 執行個體上產生新的 SSH 金鑰。AWSSupport-ResetAccess
Runbook 旨在執行 AWS Systems Manager 動作、 AWS CloudFormation 動作和函數的組合,這些動作和 AWS Lambda 函數會自動執行重設本機管理員密碼通常所需的步驟。
您可以使用 中的 Automation 工具 AWS Systems Manager搭配 AWSSupport-ResetAccess
Runbook 來解決下列問題:
Windows
遺失 EC2 金鑰對:若要解決此問題,您可以使用 AWSSupport-ResetAccess Runbook 從您目前的執行個體建立啟用密碼的 AMI,從 AMI 啟動新的執行個體,接著選取您自己的金鑰對。
遺失本機管理員密碼:若要解決此問題,您可以使用 AWSSupport-ResetAccess
Runbook 產生可藉由目前的 EC2 金鑰對解密的新密碼。
Linux
遺失 EC2 金鑰對,或遺失設定執行個體之 SSH 存取的金鑰:若要解決此問題,您可以使用 AWSSupport-ResetAccess
Runbook 為目前的執行個體建立新的 SSH 金鑰,這可讓您再次連線至執行個體。
注意
如果您的適用於 Windows Server 的 EC2 執行個體是針對 Systems Manager 設定,您也可以使用 EC2Rescue 和 AWS Systems Manager Run Command 重設本機管理員密碼。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的將 EC2Rescue for Windows Server 與 Systems Manager Run Command 搭配使用。
- 相關資訊
-
《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 執行個體會在此子網路中建立。如果您未指定子網路,則 Automation 會在您的 中建立新的臨時 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 受管政策,您也必須為其連接 AmazonSSMAutomationRole 受管政策,以使您的執行個體能夠與 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 角色和政策
-
下載
AWSSupport-EC2RescueRole.zip
並將AWSSupport-EC2RescueRole.json
檔案解壓縮至本機電腦上的目錄。 -
如果您的 AWS 帳戶 位於特殊分割區中,請編輯範本,將 ARN 值變更為分割區的 ARN 值。
例如,對於中國區域,將
arn:aws
的所有案例變更為arn:aws-cn
。 登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/cloudformation
開啟 AWS CloudFormation 主控台。 -
選擇 Create stack (建立堆疊)、With new resources (standard) (使用新資源 (標準))。
-
在 Create stack (建立堆疊) 頁面上,對於 Prerequisite - Prepare template (先決條件 - 準備範本),選擇 Template is ready (範本已準備就緒)。
-
對於 Specify template (指定範本),選擇 Upload a template file (上傳範本檔案)。
-
選擇 Choose file (選擇檔案),然後瀏覽並從您解壓縮檔案的目錄中選取
AWSSupport-EC2RescueRole.json
檔案。 -
選擇 Next (下一步)。
-
在 Specify stack details (指定堆疊詳細資訊) 頁面上,對於 Stack name (堆疊名稱) 欄位,輸入識別此堆疊的名稱,然後選擇 Next (下一步)。
-
(選用) 在 Tags (標籤) 區域中將一個或多個標籤索引鍵名稱/值對套用到堆疊。
標籤是您指派給資源的選用性中繼資料。標籤可讓您以不同的方式 (例如用途、擁有者或環境) 將資源分類。例如,您可能想要標記堆疊來識別其執行的任務類型、相關的目標類型或其他資源,以及其執行所在的環境。
-
選擇 Next (下一步)
-
在檢閱頁面上,檢閱堆疊詳細資訊,然後向下捲動並選擇我確認 AWS CloudFormation 可能會建立 IAM 資源選項。
-
AWS CloudFormation 會顯示 CREATE_IN_PROGRESS 狀態幾分鐘。堆疊建立之後,狀態會變更為 CREATE_COMPLETE (CREATE_COMPLETE)。您也可以選擇重新整理圖示來檢查建立程序的狀態。
-
在堆疊清單中,選擇您剛建立堆疊旁的選項,然後選擇 Outputs (輸出) 標籤。
-
複製 Value (值)。此為 AssumeRole 的 ARN。您會在執行自動化時指定此 ARN。
執行自動化
下列程序說明如何使用 AWS Systems Manager
主控台來執行 AWSSupport-ResetAccess
Runbook。
重要
以下自動化會停止執行個體。停止執行個體可能會導致已連接執行個體存放磁碟區上的資料遺失 (若有)。停止執行個體也可能會導致公有 IP 變更 (若無關聯的彈性 IP)。為了避免這些組態變更,請使用 Run Command 重設存取。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的將 EC2Rescue for Windows Server 與 Systems Manager Run Command 搭配使用。
執行 AWSSupport-ResetAccess 自動化
在 https://https://console.aws.amazon.com/systems-manager/
開啟 AWS Systems Manager 主控台。 在導覽窗格中,選擇 Automation (自動化)。
-
選擇 Execute automation (執行自動化)。
-
在 Automation document (自動化文件) 部分,從清單選擇 Owned by Amazon (由 Amazon 所有)。
-
在 Runbook 清單中,選擇 AWSSupport-ResetAccess 卡片中的按鈕,然後選擇 Next (下一步)。
-
在 Execute automation document (執行自動化文件) 頁面上,選擇 Simple execution (簡易執行)。
-
在 Document details (文件詳細資訊) 部分,確認 Document version (文件版本) 設為最高的預設版本。例如,$DEFAULT 或 3 (default) (3 (預設))。
-
在 Input parameters (輸入參數) 區段中,指定以下參數:
-
針對 InstanceID,指定無法連線之執行個體的 ID。
-
針對 SubnetId,在與您指定之執行個體位於相同可用區域的現有 VPC 中指定子網路。根據預設,Systems Manager 會建立新的 VPC,但您也可以在現有 VPC 中指定子網路。
注意
如果您沒見到指定子網路 ID 的選項,請確認您使用的是 Runbook 最新的 Default (預設) 版本。
-
針對 EC2RescueInstanceType,指定 EC2Rescue 執行個體的執行個體類型。預設執行個體類型為
t2.medium
。 -
針對 AssumeRole,如果您使用本主題先前所述的 AWS CloudFormation 程序來建立此自動化的角色,請指定您在 AWS CloudFormation 主控台中記下的 AssumeRole ARN。
-
-
(選用) 在 Tags (標籤) 區域中,套用一個或多個標籤索引鍵名稱/值對以協助識別自動化,例如
Key=Purpose,Value=ResetAccess
。 -
選擇 Execute (執行)。
-
若要監控自動化進度,請選擇執行中的自動化,接著選擇 Steps (步驟) 標籤。自動化結束時,選擇 Descriptions (描述) 標籤,接著選擇 View output (檢視輸出) 以檢視結果。若要檢視個別步驟的輸出,請選擇 Steps (步驟) 標籤,然後選擇步驟旁的 View Outputs (檢視輸出)。
作為自動化的一部分,Runbook 會建立備份 AMI 和已啟用密碼的 AMI。其他所有由自動化建立的資源都會自動刪除,但此 AMIs 會保留於您的帳戶。這些 AMIs 使用以下慣例命名:
-
備份 AMI:
AWSSupport-EC2Rescue:
InstanceID
-
密碼啟動的 AMI:AWSSupport-EC2Rescue:從
執行個體 ID
以密碼啟動的 AMI
您可以搜尋自動化執行 ID 以找到這些 AMIs。
針對 Linux,執行個體的新 SSH 私密金鑰會加密儲存於 Parameter Store。參數名稱為 /ec2rl/openssh/instance ID
/key。