

• 2026 年 4 月 30 日之後， AWS Systems Manager CloudWatch Dashboard 將不再可用。客戶可以繼續使用 Amazon CloudWatch 主控台來檢視、建立和管理其 Amazon CloudWatch 儀表板，就像現在一樣。如需詳細資訊，請參閱 [Amazon CloudWatch Dashboard 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

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

# 在 EC2 執行個體上重設密碼和 SSH 金鑰
<a name="automation-ec2reset"></a>

您可以使用 `AWSSupport-ResetAccess` 執行手冊來自動恢復在 Windows Server 的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上產生本機管理員密碼，以及在 Linux EC2 執行個體上產生新的 SSH 金鑰。`AWSSupport-ResetAccess` Runbook 旨在執行 AWS Systems Manager 動作、 AWS CloudFormation 動作和 AWS Lambda 函數的組合，以自動化重設本機管理員密碼通常所需的步驟。

您可以使用 中的自動化工具 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 搭配使用](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2rw-ssm.html)。

**相關資訊**  
《Amazon EC2 使用者指南》**中的[使用 PuTTY 從 Windows 連線至 Linux 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html)。

## 運作方式
<a name="automation-ec2reset-how"></a>

使用 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 至執行個體。

## 開始之前
<a name="automation-ec2reset-begin"></a>

執行以下自動化之前，請先執行以下項目：
+ 複製您想要重設管理員密碼的執行個體之執行個體 ID。您會在程序中指定此 ID。
+ 或者，收集與無法連線之執行個體位於相同可用區域中的子網路 ID。EC2Rescue 執行個體會在此子網路中建立。如果您未指定子網路，則自動化會在您的 中建立新的暫時 VPC AWS 帳戶。確認您的 至少 AWS 帳戶 有一個可用的 VPC。根據預設，您可以在一個區域中建立五個 VPC。如果您已經在區域中建立五個 VPC，則自動化會失敗且不會變更您的執行個體。如需有關 Amazon VPC 配額的詳細資訊，請參閱《Amazon VPC 使用者指南**》中的 [VPC 和子網路](https://docs.aws.amazon.com/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-vpcs-subnets)。
+ 或者，您可以建立和指定自動化的 AWS Identity and Access Management (IAM) 角色。如果您不指定此角色，則自動化會在執行自動化的使用者內容中執行。

### 授予 AWSSupport-EC2Rescue 在執行個體上執行動作的許可
<a name="automation-ec2reset-access"></a>

EC2Rescue 需要許可才能在自動化執行期間於您的執行個體一系列動作。這些動作會叫用 AWS Lambda、IAM 和 Amazon EC2 服務，以安全且安全地嘗試修復執行個體的問題。如果您在 AWS 帳戶 和/或 VPC 中具有管理員層級許可，則可以在不設定許可的情況下執行自動化，如本節所述。如果您沒有管理員層級的許可，則您或管理員必須使用以下其中一個選項來設定許可。
+ [使用 IAM 政策授予許可](#automation-ec2reset-access-iam)
+ [使用 CloudFormation 範本授予許可](#automation-ec2reset-access-cfn)

#### 使用 IAM 政策授予許可
<a name="automation-ec2reset-access-iam"></a>

您可以將以下 IAM 政策做為內嵌政策連接至使用者、群組或角色；或者，您可以建立新的 IAM 受管政策並將其連接至使用者、群組或角色。如需有關新增內嵌政策至使用者、群組或角色的詳細資訊，請參閱[使用內嵌政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_inline-using.html)。如需建立新受管政策的詳細資訊，請參閱[使用受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html)。

**注意**  
如果您建立新的 IAM 受管政策，您也必須為其連接 **AmazonSSMAutomationRole** 受管政策，以使您的執行個體能夠與 Systems Manager API 通訊。

**`AWSSupport-ResetAccess` 的 IAM 政策**

把*帳戶 ID* 取代為您自己的資訊。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "lambda:InvokeFunction",
                "lambda:DeleteFunction",
                "lambda:GetFunction"
            ],
            "Resource": "arn:aws:lambda:*:111122223333: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::111122223333:role/AWSSupport-EC2Rescue-*",
                "arn:aws:iam::111122223333: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"
        }
    ]
}
```

------

#### 使用 CloudFormation 範本授予許可
<a name="automation-ec2reset-access-cfn"></a>

CloudFormation 會使用預先設定的範本，自動建立 IAM 角色和政策的程序。藉由以下程序，使用 CloudFormation為 EC2Rescue 自動化建立所需的 IAM 角色和政策。

**為 EC2Rescue 建立所需的 IAM 角色和政策**

1. 下載 [https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWSSupport-EC2RescueRole.zip](https://docs.aws.amazon.com/systems-manager/latest/userguide/samples/AWSSupport-EC2RescueRole.zip) 並將 `AWSSupport-EC2RescueRole.json` 檔案解壓縮至本機電腦上的目錄。

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

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

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 CloudFormation 主控台。

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

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

1. 對於 **Specify template (指定範本)**，選擇 **Upload a template file (上傳範本檔案)**。

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

1. 選擇**下一步**。

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

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

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

1. 選擇 **Next** (下一步)

1. 在**檢閱**頁面上，檢閱堆疊詳細資訊，然後向下捲動並選擇**我確認 CloudFormation 可能建立 IAM 資源**的選項。

1. CloudFormation 會顯示 **CREATE\$1IN\$1PROGRESS** 狀態幾分鐘。堆疊建立之後，狀態會變更為 **CREATE\$1COMPLETE (CREATE\$1COMPLETE)**。您也可以選擇重新整理圖示來檢查建立程序的狀態。

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

1. 複製 **Value (值)**。此為 AssumeRole 的 ARN。您會在執行自動化時指定此 ARN。

## 執行自動化
<a name="automation-ec2reset-executing"></a>

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

**重要**  
以下自動化會停止執行個體。停止執行個體可能會導致已連接執行個體存放磁碟區上的資料遺失 (若有)。停止執行個體也可能會導致公有 IP 變更 (若無關聯的彈性 IP)。為了避免這些組態變更，請使用 Run Command 重設存取。如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的[將 EC2Rescue for Windows Server 與 Systems Manager Run Command 搭配使用](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2rw-ssm.html)。

**執行 AWSSupport-ResetAccess 自動化**

1. 在 https：//[https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/) 開啟 AWS Systems Manager 主控台。

1. 在導覽窗格中，選擇 **Automation** (自動化)。

1. 選擇 **Execute automation (執行自動化)**。

1. 在 **Automation document (自動化文件)** 部分，從清單選擇 **Owned by Amazon (由 Amazon 所有)**。

1. 在 Runbook 清單中，選擇 **AWSSupport-ResetAccess** 卡片中的按鈕，然後選擇 **Next** (下一步)。

1. 在 **Execute automation document (執行自動化文件)** 頁面上，選擇 **Simple execution (簡易執行)**。

1. 在 **Document details (文件詳細資訊)** 部分，確認 **Document version (文件版本)** 設為最高的預設版本。例如，**\$1DEFAULT** 或 **3 (default) (3 (預設))**。

1. 在 **Input parameters (輸入參數)** 區段中，指定以下參數：

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

   1. 針對 **SubnetId**，在與您指定之執行個體位於相同可用區域的現有 VPC 中指定子網路。根據預設，Systems Manager 會建立新的 VPC，但您也可以在現有 VPC 中指定子網路。
**注意**  
如果您沒見到指定子網路 ID 的選項，請確認您使用的是 Runbook 最新的 **Default** (預設) 版本。

   1. 針對 **EC2RescueInstanceType**，指定 EC2Rescue 執行個體的執行個體類型。預設執行個體類型為 `t2.medium`。

   1. 針對 **AssumeRole**，如果您使用本主題先前所述的 CloudFormation 程序為此自動化建立角色，請指定您在 CloudFormation 主控台中記下的 AssumeRole ARN。

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

1. 選擇 **Execute (執行)**。

1. 若要監控自動化進度，請選擇執行中的自動化，接著選擇 **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**。