Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
為什麼我無法連線到 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 版本。
檢查您的執行個體存取組態
檢查您的安全群組規則
傳入安全群組規則必須允許從您的 IP 位址存取 Linux 的連接埠 22 和 Windows 的連接埠 3389。
若要檢查您的安全群組規則,請執行以下 describe-security-groups AWS CLI 命令:
aws ec2 describe-security-groups --group-ids SG-IDs
**注意:**將 SG-ID 替換為您的安全群組 ID。
如果允許清單上沒有連接埠 22 或 3389,請執行下列 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 位址。如果您使用 Windows 執行個體,請將 22 替換為 3389。如果來源 IP 位址是公共 IP 位址,您可以使用 checkip.amazonaws.com 工具識別該 IP 位址。
檢查您的網路 ACL
預設情況下,網路存取控制清單 (網路 ACL) 允許所有傳入和傳出流量。請確定您的網路 ACL 允許對執行個體的傳入 SSH 存取和對臨時連接埠 (1024-65535) 的傳出存取。如果網路 ACL 封鎖連接埠 22 或 3389,請新增規則以允許該流量。對於公共 IP 位址,請確定路由表中包含將流量路由至網際網路閘道的項目。
檢查您的路由表
確認您的路由表具有該連線的路由。
確認您的執行個體通過狀態檢查
若要連線到執行個體,執行個體必須通過其狀態檢查。使用 Amazon EC2 主控台檢查系統狀態和執行個體狀態是否皆顯示正常。您也可以使用 Amazon CloudWatch 指標來檢查執行個體的狀態,並識別影響連線的問題。
**注意:**最佳實務是檢查排程維護以及其他可能影響執行個體連線的事件。
如果執行個體狀態不為正常,則重新啟動執行個體。重新啟動執行個體通常可以解決小問題。如果您仍然無法連線,或系統狀態不為正常,則問題可能出在 AWS 基礎結構。若要解決此問題,請參閱為什麼我的 Amazon EC2 執行個體因系統狀態檢查失敗而停機?
如果您仍然遇到問題,請參閱如何疑難排解 EC2 Linux 執行個體的狀態檢查失敗?或為什麼我的 EC2 Windows 執行個體因執行個體狀態檢查失敗而停機?
疑難排解連線錯誤
如果您的執行個體通過狀態檢查,但您收到連線錯誤,請參閱下列資源:
- 如何解決 Amazon EC2 Linux 執行個體的 SSH 連線問題?
- 如何對 EC2 Windows 執行個體的 RDP 連線問題進行疑難排解?
- 如何對使用 RDP 連線至 EC2 Windows 執行個體時發生驗證錯誤進行疑難排解?
- 對連線至 Amazon EC2 Linux 執行個體的問題進行疑難排解
- 對連線至 Amazon EC2 Windows 執行個體的問題進行疑難排解
還原 SSH 連線
注意: 如果您遺失 SSH 金鑰對,請參閱初次啟動執行個體後,如果我遺失 SSH 金鑰對,如何連線到 Amazon EC2 執行個體?
檢查您的使用者名稱和 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 執行個體時,出現的「Connection refused」或「Connection timed out」錯誤進行疑難排解?和對連線到 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 Instance Connect 連線到 EC2 執行個體時,如何疑難排解收到的錯誤?
使用 EC2 序列主控台還原連線
**先決條件:**設定對 EC2 序列主控台的存取權。
若要使用 EC2 序列主控台連線到您的執行個體,您可以使用 Amazon EC2 主控台或 SSH。如需詳細資訊,請參閱如何存取無法存取的 Linux 執行個體的 EC2 序列主控台?
如果您在使用 EC2 序列主控台時遇到問題,請確定您的 IAM 政策包含 ec2-instance-connect:SendSerialConsoleSSHPublicKey 動作。
還原 Session Manager 連線
Session Manager 只會透過 IAM 角色和權限管理驗證,而不是使用 SSH 金鑰。使用 Session 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 連線到您的執行個體。然後,根據您的發佈項目執行以下命令,以檢查 SSM 代理程式的狀態。
使用 systemd 的系統:
sudo systemctl status amazon-ssm-agent
Debian 或 Ubuntu 系統:
sudo systemctl status snap.amazon-ssm-agent.amazon-ssm-agent.service
如果代理程式狀態為已停止,請根據您的發佈項目執行以下命令,以將其啟動。
使用 systemd 的系統:
sudo systemctl start amazon-ssm-agent
Debian 或 Ubuntu 系統:
sudo systemctl start snap.amazon-ssm-agent.amazon-ssm-agent.service
若要確認 SSM 代理程式是否正在執行,請檢查系統日誌。
最佳實務是使用最新版本的 SSM 代理程式。若要檢查您是否擁有最新版本,請參閱 GitHub 網站上的 amazon-ssm-agent/RELEASENOTES。如果您沒有最新版本,請根據您的作業系統 (OS) 安裝更新的 SSM 代理程式。
若要進一步進行疑難排解,請檢查 /var/log/amazon/ssm/amazon-ssm-agent.log 日誌中是否有錯誤。或者,請參閱SSM 代理程式疑難排解。
確認網路連線
請確定您的網路 ACL 和安全群組允許透過連接埠 443 建立到 AWS 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 年前
- 已提問 2 年前
AWS 官方已更新 10 個月前
