為什麼 Systems Manager 不會將我的 Amazon EC2 執行個體顯示為受管執行個體?
我想知道為什麼我會收到 “SSM Agent is not online”” or “Connection Lost” (SSM Agent 未上線) 錯誤,或者為什麼我的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體無法在 Fleet Manager 中顯示。
簡短描述
如果您的 AWS Systems Manager Agent (SSM Agent) 在 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上處於離線狀態,您會收到下列通知:
- Session Manager (AWS Systems Manager 的一項功能) 顯示「SSM Agent is not online.The SSM Agent was unable to connect to a Systems Manager endpoint to register itself with the service」(SSM Agent 未上線。SSM Agent 無法連線至 Systems Manager 端點以向服務註冊) 錯誤。
- Fleet Manager (AWS Systems Manager 的一項功能) 會將您執行個體的 ping 狀態報告為「Connection Lost」(連線中斷) 錯誤。
- Fleet Manager 不會列出您的執行個體。
**注意:**如果您的 SSM Agent 處於離線狀態,則您的執行個體不會在 Systems Manager 中顯示為受管執行個體。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
完成以下先決條件,然後使用 AWSSupport-TroubleshootManagedInstance 執行手冊,確定 SSM Agent離線或無法連線到 Systems Manager 的原因。如需詳細資訊,請參閱執行 Systems Manager Automation 支援的自動化作業和設定自動化。
您也可以使用 AWS CLI 來對執行個體進行疑難排解,或手動對執行個體進行疑難排解。
確認 SSM Agent 是否已安裝並正在執行
**重要:**在整個疑難排解步驟中,選取執行個體所在的 AWS 區域。
確認您的 Systems Manager 支援您的作業系統 (OS)。然後,根據您的作業系統執行命令,確認您是否安裝了 SSM Agent。
**注意:**大多數 Amazon Machine Image (AMI) 上都預先安裝了 SSM Agent。如需詳細資訊,請參閱尋找預先安裝 SSM Agent 的 AMI。如果您沒有在執行個體中安裝 SSM Agent,請在 Linux、Windows 或 macOS 上手動安裝。
若要確認 SSM Agent 的狀態是否正在運作,以及 SSM Agent 是否處於休眠狀態,請完成下列步驟:
- 開啟 Amazon EC2 console (Amazon EC2 主控台)。
- 在左側導覽窗格中,選擇 Instances (執行個體)。
- 選取執行個體。
- 選擇 Actions (動作)、Monitor and troubleshoot (監視和疑難排解)、Get system log (取得系統日誌)。
如果您的 SSM Agent 正在執行,那麼您會收到「Amazon SSM Agent vx.xxx 正在執行」訊息。
如果您的 SSM Agent 處於休眠狀態,那麼您會收到以下其中一則訊息,後面接著 SSM Agent 處於休眠狀態的原因:
- 「SSM Agent 因錯誤進入休眠狀態:」
- 「SSM Agent 無法取得憑證:」
**注意:**如果您使用 SSM Agent 版本 3.3.2471.0 或更新版本,請查看執行個體的系統日誌,以找出 SSM Agent 處於休眠狀態的原因。
執行 Systems Manager 自動化執行手冊
先決條件:在執行自動化作業之前,請確定您的 AWS Identity and Access Management (IAM) 使用者或角色具有必要的權限。如需詳細資訊,請參閱 AWSSupport-TroubleshootManagedInstance 上的必要的 IAM 權限一節。
若要執行此執行手冊,請完成下列步驟:
- 開啟 AWSSupport-TroubleshootManagedInstance 執行手冊。
- 在輸入參數,輸入下列資訊:
對於 InstanceId,輸入受影響執行個體的 ID。您可以手動輸入執行個體 ID,也可以使用互動式執行個體選擇器。如果您使用執行個體選擇器,則將篩選器從 Show managed instance only (僅顯示受管執行個體) 變更為 Show all instances (顯所有執行個體)。
(選用) 在 AutomationAssumeRole,輸入 AM 角色的 Amazon Resource Name (ARN),該角色可讓 Systems Manager Automation 代表您執行動作。如果您未指定角色,則 Systems Manager Automation 會使用可執行文件之使用者的權限。 - 選擇 Execute (執行)。
完成自動化後,請查看 Outputs (輸出) 區段。FinalOutput.Message 變數會顯示 Systems Manager 是否管理執行個體、顯示檢查是通過或失敗,並提供如何進行疑難排解的資訊。
使用 AWS CLI 對離線 SSM Agent 的問題進行疑難排解
請完成下列步驟:
- 確認您是否可以透過 SSH 或遠端桌面通訊協定存取執行個體。
- 執行 ssm-cli AWS CLI 命令來對受管執行個體的可用性問題進行疑難排解:
Linux 和 macOS
Windowsssm-cli get-diagnostics --output table
PowerShellssm-cli.exe get-diagnostics --output table
**注意:**在 Windows Server 電腦上,您必須先前往 C:\Program Files\Amazon\SSM 目錄,然後再執行 ssm-cli 命令。.\ssm-cli.exe get-diagnostics --output table
如果 SSM Agent 無法正常執行,則 ssm-cli 命令可能無法使用。如需詳細資訊,請參閱 SSM Agent 疑難排解。
手動對 Amazon EC2 執行個體進行疑難排解
確認連接埠 443 上 Systems Manager 端點的連線
連接埠 443 上 Systems Manager 端點的連線驗證,適用於您的作業系統和子網路設定。如需依區域劃分的 Systems Manager 端點清單,請參閱服務端點。
**注意:**在下列範例中,Session Manager 需要 ssmmessages 端點。
EC2 Linux 執行個體
對 EC2 Linux 執行個體使用 Telnet 或 Netcat 命令驗證連接埠 443 上端點的連接性。Netcat 未預先安裝在 EC2 執行個體上。若要手動安裝 Netcat,請參閱 Nmap 網站上的 Ncat。
注意: 在下列命令中,將 RegionID 取代為執行個體的區域 ID。
Telnet 命令:
telnet ssm.RegionID.amazonaws.com 443 telnet ec2messages.RegionID.amazonaws.com 443 telnet ssmmessages.RegionID.amazonaws.com 443
Telnet 連線範例:
root@111800186:~# telnet ssm.us-east-1.amazonaws.com 443 Trying 52.46.141.158... Connected to ssm.us-east-1.amazonaws.com. Escape character is '^]'.
若要離開 telnet,請按 Ctrl 和**]** 鍵。輸入 quit,然後按 Enter。
Netcat 命令:
nc -vz ssm.RegionID.amazonaws.com 443 nc -vz ec2messages.RegionID.amazonaws.com 443 nc -vz ssmmessages.RegionID.amazonaws.com 443
EC2 Windows 執行個體
若要對 EC2 Windows 執行個體驗證連接埠 443 上端點的連接性,請執行下列 Windows PowerShell 命令:
Test-NetConnection ssm.RegionID.amazonaws.com -port 443 Test-NtConnection ec2messages.RegionID.amazonaws.com -port 443 Test-NetConnection ssmmessages.RegionID.amazonaws.com -port 443
公有子網路
Systems Manager 端點為公有。若要解決公有子網路中執行個體的連線問題,執行個體的路由表必須將網際網路流量路由至網際網路閘道。此外,Amazon Virtual Private Cloud (Amazon VPC) 安全群組和網路存取控制清單 (網路 ACL) 必須允許連接埠 443 上的傳出連線。
私有子網路
使用私有 IP 位址私密存取 Amazon EC2 和 Systems Manager API。若要解決私有子網路中執行個體的連線問題,執行個體的路由表必須將網際網路流量路由至 NAT 閘道。或者,您必須將 VPC 端點設定為連線 Systems Manager 端點。
如需詳細資訊,請參閱如何建立 VPC 端點以便我可以使用 Systems Manager 在沒有網際網路存取時管理私有 EC2 執行個體?
**注意:**每個介面端點會在提供的子網路中建立彈性網路介面。
作為私有子網路的安全性最佳實踐,請確認下列設定:
- 附加到 VPC 端點的網路介面的安全群組,允許來自附加到執行個體的安全群組的 TCP 連接埠 443 傳入流量。
- 附加到執行個體的安全群組,允許 TCP 連接埠 443 傳出流量到 VPC 端點網路介面的私有 IP 位址。
驗證預設主機管理組態的設定
注意: 如果您未啟用預設主機管理組態,請繼續確認正確的 IAM 角色是否已附加至執行個體區段。
如果預設主機管理組態建立的 IAM 角色沒有足夠的使用案例的許可,則您可以新增政策。
所有關聯的執行個體都必須使用 Instance Metadata Service 版本 2 (IMDSv2)。若要檢查您的 IMDSv2 組態,請使用 MetadataNoToken Amazon CloudWatch 指標來判斷何時 IMDSv1 使用率為零。然後,檢查您的執行個體是否已轉換為 IMDSv2。
預設主機管理組態在 SSM Agent 版本 3.2.582.0 或更新版本中可以使用。若要驗證您的 SSM Agent 版本,請參閱檢查 SSM Agent 版本號。
若要驗證預設主機管理組態的設定,請使用 Systems Manager 主控台或 AWS CLI。
Systems Manager 主控台
完成下列步驟:
- 開啟 Systems Manager 主控台。
- 在導覽窗格中,選擇 Fleet Manager。
- 在 Account management (帳戶管理) 下拉式清單中,選擇 Default Host Management Configuration (預設主機管理組態)。
- 確認 Enable Default Host Management Configuration (啟用預設主機管理組態) 設定已開啟。
AWS CLI
執行 get-service-setting AWS CLI 命令,以驗證預設主機管理組態的設定:
aws ssm get-service-setting \ --setting-id arn:aws:ssm:RegionID:AccountID:servicesetting/ssm/managed-instance/default-ec2-instance-management-role
注意: 將 AccountID 取代為您的 AWS 帳戶 ID。
啟用預設主機管理組態後,您會收到類似於下列的輸出:
{ "ServiceSetting": { "SettingId": "/ssm/managed-instance/default-ec2-instance-management-role", "SettingValue": "service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole", "LastModifiedDate": 1679492424.738, "LastModifiedUser": "arn:aws:sts::012345678910:assumed-role/role/role-name", "ARN": "arn:aws:ssm:ap-southeast-1:012345678910:servicesetting/ssm/managed-instance/default-ec2-instance-management-role", "Status": "Customized" } }
**注意:**如果 SettingValue 的值為 $None,則表示預設主機管理組態未設定。
驗證預設主機管理組態是否使用適當的 IAM 角色
當您設定預設主機管理組態時,最佳實踐是使用 AWSSystemsManagerDefaultEC2InstanceManagementRole IAM。若要使用其他角色,請確保該角色已附加 AmazonSSMManagedEC2InstanceDefaultPolicy IAM 政策。
如果您的執行個體附加執行個體設定檔,則移除允許 ssm:UpdateInstanceInformation 作業的所有許可。SSM Agent 會嘗試使用執行個體設定檔許可,然後再使用預設主機管理組態許可。當您允許執行個體設定檔中執行 ssm:UpdateInstanceInformation 作業時,執行個體不會使用預設主機管理組態許可。
確認正確的 IAM 角色已附加至執行個體
注意: 如果您已啟用預設主機管理組態,請繼續驗證與 IMDS 的連線區段。
若要對 Systems Manager 端點進行 API 呼叫,您必須將 AmazonSSMManagedInstanceCore 政策附加到已附加至執行個體的 IAM 角色。如果您使用的是自訂 IAM 政策,請確認您的自訂策略是否使用 AmazonSSMManagedInstanceCore 中的權限。此外,請確保您的 IAM 角色的信任政策允許 ec2.amazonaws.com 擔任此角色。如需詳細資訊,請參閱 EC2 執行個體許可的替代組態。
驗證與 IMDS 的連線
SSM Agent 必須與 IMDS 通訊,才能取得有關執行個體的資訊。若要測試連線,請根據您執行個體的作業系統執行以下命令:
-
Linux
nc -vz 169.254.169.254 80 -
Windows
Test-NetConnection 169.254.169.254 -port 80
若要確認是否為現有執行個體設定了 IMDS,請使用 Amazon EC2 主控台或 AWS CLI。
Amazon EC2 主控台
完成下列步驟:
- 開啟 Amazon EC2 console (Amazon EC2 主控台)。
- 在導覽窗格中,選擇 Instances (執行個體),然後選取您的執行個體。
- 選擇 Actions (動作),然後選擇 Instance settings (執行個體設定)。
- 選擇 Modify instance metadata options (修改執行個體中繼資料選項)。
- 在對話方塊中,確定 Instance metadata service (執行個體中繼資料服務) 已 Enabled (啟用)。
AWS CLI
執行 describe-instances AWS CLI 命令,以確認已為您現有執行個體設定 IMDS:
aws ec2 describe-instances --query "Reservations[*].Instances[*].MetadataOptions" --instance-ids i-012345678910
範例輸出結果:
[ [ { "State": "applied", "HttpTokens": "optional", "HttpPutResponseHopLimit": 1, "HttpEndpoint": "enabled", "HttpProtocolIpv6": "disabled", "InstanceMetadataTags": "disabled" } ] ]
注意: 如果輸出顯示 "HttpTokens": "optional",則同時支援 IMDSv1 和 IMDSv2。如果輸出顯示 HttpTokens": "required",則只支援 IMDSv2。如果輸出顯示 "HttpEndpoint": "enabled",則會開啟 IMDS。
如果您在執行個體上使用代理伺服器,則代理伺服器可能會封鎖連線到中繼資料 URL。若要防止封鎖,請將您的 SSM Agent 設定為支援代理伺服器,並為中繼資料 URL 設定 no_proxy。
若要設定 SSM Agent 使用代理伺服器,請參閱下列 AWS 文件:
其他疑難排解
如果您的執行個體仍未顯示為受管節點或在 Systems Manager 中顯示連線中斷,請檢閱 SSM Agent 日誌繼續疑難排解。對於 Linux 和 macOS,日誌位於 /var/log/amazon/ssm 中。對於 Windows,日誌位於 %PROGRAMDATA%\Amazon\SSM\Logs 中。
如果您的執行個體未向 SSM Agent 報告,請使用 Windows 的遠端桌面通訊協定 (RDP) 或 Linux 的 SSH 來收集日誌。如果無法收集日誌,則停止執行個體並分離根磁碟區。然後,將根磁碟區附加到與次要磁碟區相同可用區域中的另一個執行個體,以取得日誌。
相關資訊
Systems Manager Automation 執行手冊參考
將 Amazon Elastic Block Store (Amazon EBS) 磁碟區附加到 Amazon EC2 執行個體
- 語言
- 中文 (繁體)

相關內容
- 已提問 3 年前
- 已提問 2 年前
- 已提問 3 年前
- 已提問 3 年前
