我想對使用 Amazon Elastic Compute Cloud (Amazon EC2) Instance Connect 連線至 EC2 Linux 執行個體時出現的問題進行疑難排解。
簡短說明
以下是使用 EC2 Instance Connect 連線至執行個體時可能會收到錯誤的常見原因:
- EC2 Instance Connect 不支援作業系統 (OS) 版本。
- 執行個體上未安裝 EC2 Instance Connect 套件。
- AWS Identity and Access Management (IAM) 政策或許可缺少或不正確。
- 與執行個體關聯的安全群組未列出 EC2 Instance Connect 服務 IP 位址。
- 網路存取或組態不正確。
若要判斷連線失敗的原因,您可以使用 AWSSupport-TroubleshootEC2InstanceConnect AWS Systems Manager 自動化執行手冊。如需有關自動化工作流程的資訊,請參閱 AWS Support Automation Workflows (SAW) 和設定自動化。
您也可以手動對 EC2 執行個體進行疑難排解。
解決方法
**先決條件:**如果您的執行個體沒有公用 IP 位址,則必須與虛擬私有雲端 (VPC) 建立私有網路連線。若要與您的 VPC 建立私有網路連線,請使用 AWS Direct Connect、AWS Site-to-Site VPN 或 VPC 對等互連。如果您的執行個體沒有公用 IPv4 位址,且您的 VPC 沒有私有網路連線組態,請使用 EC2 Instance Connect 端點。
**注意:**如果已開啟適用於 Linux 執行個體的 EC2 序列主控台,則可使用序列主控台對基於 Nitro 的執行個體類型進行疑難排解。如果您無法連接執行個體,且尚未設定序列主控台的存取權,請參閱設定 EC2 序列主控台的存取權。
使用執行手冊進行 EC2 執行個體疑難排解
在啟動 AWSSupport-TroubleshootEC2InstanceConnect 執行手冊之前,請確定您的 IAM 使用者或角色具有所需的權限。如需詳細資訊,請參閱 AWSSupport-TroubleshootEC2InstanceConnect 的必要 IAM 權限一節。
若要執行手冊,請完成下列步驟:
- 開啟 Systems Manager console (系統管理員主控台)。
- 在導覽窗格中,選擇 Shared Resources (共用資源),然後選擇 Documents (文件)。
- 選擇 Automation documents (自動化文件)。
- 在搜尋欄位中輸入 AWSSupport-TroubleshootEC2InstanceConnect,然後選取文件。
- 選擇 Execute automation (執行自動化)。
- 對於輸入參數,請輸入下列值:
針對 InstanceId 輸入無法連線之執行個體的 ID。
(選擇性) 針對 AutomationAssumeRole 輸入 IAM 角色的 ARN,該角色可讓 Systems Manager Automation 代表您執行動作。如果您未指定角色,則 Systems Manager Automation 會使用可執行執行手冊之使用者的權限。
針對 Username 輸入用來連線到執行個體的使用者名稱。此參數會決定是否為使用者授與 IAM 存取權。
對於 EC2InstanceConnectRoleOrUser,請輸入 EC2 Instance Connect 用於將金鑰推送至執行個體的 IAM 身分 ARN。
(選擇性) 對於 SSHport,請輸入執行個體上設定的 SSH 連接埠。預設值為 22,連接埠號碼必須介於 1 至 65535 之間。
(選擇性) 對於 SourceNetworkType,請輸入您用來連線到執行個體的網路類型。
(選擇性) 對於 SourceIpCIDR,請輸入無類別域間路由 (CIDR) 範圍,該範圍包含您用來連線到 EC2 Instance Connect 之裝置的 IP 位址。如果此欄位為空,則執行手冊無法判斷執行個體的安全性群組和網路存取控制清單 (ACL) 規則是否允許 SSH 流量。
- 選擇 Execute (執行)。
- 在 Outputs (輸出) 區段中檢閱詳細的結果。
手動對 EC2 執行個體進行疑難排解
若要疑難排解連線到 EC2 執行個體時出現的問題,請確認下列組態:
使用基於瀏覽器的 SSH 連線
基於瀏覽器的 SSH 連線會要求執行個體的安全群組傳入規則允許 EC2 Instance Connect 透過 TCP 連接埠 22 存取 SSH。
EC2 Instance Connect 使用特定的 IP 位址範圍,與您的執行個體建立以瀏覽器為基礎的 SSH 連線。AWS IP 位址範圍會因 AWS 區域而異。若要尋找特定區域中 EC2 Instance Connect 的 IP 位址範圍,請執行下列命令。
**注意:**在下列命令中,使用您的執行個體所在區域取代 us-east-1。確認您的執行個體位於 EC2 Instance Connect 支援的區域。
Windows
請使用 Windows PowerShell 執行下列命令:
PS C:\> Get-AWSPublicIpAddressRange -Region us-east-1 -ServiceKey EC2_INSTANCE_CONNECT | select IpPrefix
Linux
請使用 curl 和 jq 執行下列命令:
$ curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.region=="us-east-1") | select(.service=="EC2_INSTANCE_CONNECT") | .ip_prefix'
更新您的安全群組傳入規則,以允許上述命令傳回的 IP 位址範圍透過 TCP 連接埠 22 進行存取。
使用 EC2 Instance Connect CLI 連線
更新您的安全群組傳入規則,以允許您的 IP 位址透過 TCP 連接埠 22 進行存取。
相關資訊
執行 Systems Manager Automation 支援的自動化作業
使用 EC2 Instance Connect 連線至您的 Linux 執行個體
如果在開始啟動執行個體後遺失 SSH 金鑰對,我該如何連線到我的 Amazon EC2 執行個體?
如何對使用 SSH 連線至 Amazon EC2 Linux 執行個體的問題進行疑難排解?