Knowledge Center Monthly Newsletter - September 2025
Stay up to date with the latest from the Knowledge Center. See all new Knowledge Center articles published in the last month, and re:Post’s top contributors.
如何還原與 EC2 執行個體的連線?
我失去了與 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體的連線,我想還原存取。
簡短描述
首先,根據執行個體和系統狀態對 EC2 執行個體進行疑難排解。
如果仍然無法連線,請還原 SSH、EC2 Instance Connect 或 Session Manager (AWS Systems Manager 的功能) 連線。或者,使用 EC2 序列主控台嘗試還原您的連線。
**注意:**通常,您只會使用 EC2 序列主控台來對問題進行疑難排解,而不是使用執行標準程序。
如果您的連線方法無法運作,請使用其他連線方法存取您的執行個體,並對問題進行疑難排解。
如果仍然無法還原連線,請使用救援執行個體,檢查受影響執行個體的日誌中是否有錯誤。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
檢查您的執行個體和系統狀態
使用 Amazon EC2 主控台檢查系統狀態和執行個體狀態是否皆顯示正常。您也可以使用 Amazon CloudWatch 指標來檢查執行個體的狀態,並識別影響連線的問題。
**注意:**最佳做法是檢查排程維護以及其他可能影響執行個體連線的事件。
如果系統狀態不為正常,則問題可能出在 AWS 基礎架構上。若要解決此問題,請參閱為什麼我的 EC2 Linux 執行個體無法通過系統狀態檢查?
如果執行個體狀態不是正常,則重新啟動執行個體。重新啟動執行個體通常可以解決小問題。如果仍然無法連線,請先停止再啟動您的執行個體,以將執行個體遷移到運作狀態良好的硬體。
**注意:**當您先停止再啟動執行個體時,該執行個體的公有 IP 位址會變更。最佳做法是使用彈性 IP 位址 (而非公有 IP 位址) 將外部流量路由到您的執行個體。
還原 SSH 連線
檢查您的安全群組規則
請確定傳入安全群組規則允許從您的 IP 位址存取連接埠 22。若要檢查您的安全群組規則,請執行以下 describe-security-groups AWS CLI 命令:
aws ec2 describe-security-groups --group-ids SG-IDs
**注意:**將 SG-ID 替換為您的安全群組 ID。
如果您無法存取連接埠 22,請執行以下 authorize-security-group-ingress 命令來更新您的規則,以允許存取:
aws ec2 authorize-security-group-ingress --group-id SG-ID --protocol tcp --port 22 --cidr SOURCE-IP/32
**注意:**將 SG-ID 替換為您的安全群組 ID,將 SOURCE-IP 替換為您的來源 IP 位址。如果來源 IP 位址是公有 IP 位址,您可以使用 checkip.amazonaws 工具來識別該 IP 位址。
檢查您的網路 ACL
預設情況下,網路存取控制清單 (網路 ACL) 允許所有傳入和傳出流量。請確定您的網路 ACL 允許對執行個體的傳入 SSH 存取和對臨時連接埠 (1024-65535) 的傳出存取。如果網路 ACL 封鎖了連接埠 22,請新增規則以允許流量。對於公有 IP 位址,請確定路由表中包含將流量路由至網際網路閘道的項目。
檢查您的使用者名稱和 IP 位址設定
確定您的執行個體使用了正確的使用者名稱。然後,從公有 IP 位址連線到執行個體。
**注意:**如果您從私有 IP 位址連線,請確定您與目標執行個體具有有效的網路連線。
檢查 SSH 伺服器狀態
若要檢查 SSH 伺服器的狀態,請使用 Session Manager、EC2 Instance Connect 或 EC2 序列主控台連線到該執行個體。
根據您的發行版執行以下命令,檢查 SSH 服務的狀態:
使用 systemd 的系統:
sudo systemctl status sshd
Ubuntu 或 Debian 系統:
sudo systemctl status ssh
舊式系統,例如 CentOS 6:
sudo service sshd status
如果 SSH 服務狀態為已停止,請根據您的發行版執行下列命令,以啟動該服務:
使用 systemd 的系統:
sudo systemctl start sshd
Ubuntu 或 Debian 系統:
systemctl start ssh
舊式系統,例如 CentOS 6:
sudo service sshd start
檢查您的私有金鑰檔案權限
確定您的私有金鑰檔案具有唯讀權限。
測試網路連線
若要測試與連接埠 22 的連線,請從用戶端執行下列其中一個命令:
nc -zv Host 22
-或-
telnet Host 22
**注意:**將 Host 替換為您的 IP 位址或完整網域名稱 (FQDN)。
然後,執行以下命令,以詳細模式使用 SSH 連線到您的執行個體:
ssh -i key_pair.pem user@Host -vvv
**注意:**將 Host 替換為您的 IP 位址或 FQDN。
若要對連線問題進行疑難排解,請參閱如何對使用 SSH 連線到我的 EC2 執行個體時,出現的「連線遭拒」或「連線逾時」錯誤進行疑難排解?和對連線到 Amazon EC2 Linux 執行個體的問題進行疑難排解。
還原您的 EC2 Instance Connect 連線
首先,使用 SSH、Session Manager 或 EC2 序列主控台連線到您的執行個體,以確定您已安裝 EC2 Instance Connect。然後,使用 EC2 Instance Connect 連線到該執行個體。
如果您在使用 EC2 Instance Connect 時遇到問題,請執行下列動作:
- 確定您在連接埠 22 上為 com.amazonaws.region.ec2-instance-connect 首碼清單名稱允許傳入 SSH 流量。
- 確認您的 AWS Identity and Access Management (IAM) 使用者政策是否包含 ec2-instance-connect:SendSSHPublicKey 動作。
如果您仍然遇到問題,請參閱如何對使用 EC2 Connect 連線到 EC2 執行個體時出現的問題進行疑難排解?
使用 EC2 序列主控台還原連線
**先決條件:**設定對 EC2 序列主控台的存取權。
若要使用 EC2 序列主控台連線到您的執行個體,您可以使用 Amazon EC2 主控台或 SSH。如需詳細資訊,請參閱如何存取無法存取的 Linux 執行個體的 EC2 序列主控台?
如果您在使用 EC2 序列主控台時遇到問題,請確定您的 IAM 政策包含 ec2-instance-connect:SendSerialConsoleSSHPublicKey 動作。
使用 EC2 序列主控台連線到執行個體後,您可以使用 GRUB 進行疑難排解。
還原 Session Manager 連線
Session Manager 只會透過 IAM 角色和權限管理驗證,而不是使用 SSH 金鑰。在使用 Systems Manager 之前,請確定您遵守 Session Manager 的先決條件。然後,使用 Session Manager 連線到您的執行個體。
如果您在使用 Session Manager 時遇到問題,請執行下列動作。
檢查您的 IAM 角色
確認該執行個體具有附加了 AmazonSSMManagedInstanceCore 政策的 IAM 角色。
或者,確定該角色具有以下必要權限:
- ssmmessages:CreateControlChannel
- ssmmessages:CreateDataChannel
- ssmmessages:OpenControlChannel
- ssmmessages:OpenDataChannel
您可以為現有角色新增必要的 Session Manager 權限。
**注意:**如果您使用預設主機管理組態來管理您的執行個體,則無需建立 IAM 執行個體設定檔來管理執行個體。
如果您更新權限,請分離並重新附加 IAM 角色。等待幾分鐘,然後啟動 AWS Systems Manager Agent (SSM Agent) 或啟動執行個體。
對 SSM 代理程式狀態問題進行疑難排解
使用 SSH、EC2 序列主控台或 EC2 Instance Connect 連線到您的執行個體,然後針對使用 systemd 的系統執行以下命令:
sudo systemctl status amazon-ssm-agent
sudo systemctl start amazon-ssm-agent # if stopped
對於 Debian 或 Ubuntu 系統,請執行以下命令:
sudo systemctl status snap.amazon-ssm-agent.amazon-ssm-agent.service
sudo systemctl start snap.amazon-ssm-agent.amazon-ssm-agent.service # if stopped
若要確認 SSM 代理程式是否正在執行,請檢查系統日誌。
最佳做法是使用最新版本的 SSM 代理程式。若要檢查您是否擁有最新版本,請參閱 GitHub 網站上的 amazon-ssm-agent/RELEASENOTES。如果您沒有最新版本,請根據您的作業系統 (OS) 安裝更新的 SSM 代理程式。
若要進一步進行疑難排解,請檢查 /var/log/amazon/ssm/amazon-ssm-agent.log 日誌中是否有錯誤。或者,請參閱SSM 代理程式疑難排解。
確認網路連線
請確定您的網路 ACL 和安全群組允許透過連接埠 443 建立到 Systems Manager 端點的傳出連線。
如果您的執行個體未出現在 Session Manager 中,請參閱為什麼 Systems Manager 沒有將我的 Amazon EC2 執行個體顯示為受管執行個體?
對於私有執行個體,請建立虛擬私有雲端 (VPC) 端點。在 Service name (服務名稱) 中,請選擇 com.amazonaws.REGION.ssm 和 com.amazonaws.REGION.ssmmessages。
**注意:**將 REGION 替換為您的 AWS 區域。
您附加到 VPC 端點的安全群組,必須允許連接埠 443 上的傳入流量。
如需詳細資訊,請參閱無法連線到 SSM 端點。
檢查是否缺少先決條件
使用 SSH、EC2 序列主控台或 EC2 Instance Connect 連線到您的執行個體,然後執行下列命令對受管節點可用性問題進行疑難排解:
sudo ssm-cli get-diagnostics --output table
檢查輸出中是否存在您缺少的 Session Manager 先決條件。
或者,執行下列其中一個 Systems Manager 執行手冊,以自動檢查是否缺少先決條件:
- 執行 AWSSupport-TroubleshootManagedInstance 來檢查您的 VPC 組態,包括安全群組規則、VPC 端點、網路 ACL 規則、路由表和 IAM 設定檔。
- 執行 AWSSupport-TroubleshootSessionManager 來檢查您是否符合 Session Manager 先決條件。
檢查執行個體主控台日誌
如果您無法使用上述方法連線到執行個體,請執行以下使用者資料指令碼來還原 Session Manager 連線:
Content-Type: multipart/mixed; boundary="//" MIME-Version: 1.0 --// Content-Type: text/cloud-config; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="cloud-config.txt" #cloud-config cloud_final_modules: - [scripts-user, always] --// Content-Type: text/x-shellscript; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="userdata.txt" #!/bin/bash sudo ssm-cli get-diagnostics --output table >> /dev/console # or sudo ssm-cli get-diagnostics --output table >> /dev/ttyS0
然後,檢查執行個體主控台輸出以確定失敗的連線步驟。對失敗的步驟進行疑難排解後,請使用 Session Manager 測試您的連線。
如果仍然無法連線,請使用救援執行個體來對啟動問題進行疑難排解。
相關資訊
- 語言
- 中文 (繁體)

相關內容
- 已提問 2 年前