如何使用 Amazon EC2 執行個體作為堡壘主機,從本機電腦連線至私有 Amazon RDS 資料庫執行個體?

3 分的閱讀內容
0

我想要使用 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體做為堡壘 (跳轉) 主機。然後,我想要使用此執行個體從本機電腦連線至私有 Amazon Relational Database Service (Amazon RDS) 資料庫執行個體。

簡短描述

若要使用 Amazon EC2 執行個體作為跳轉伺服器,從本機電腦連線至私有 Amazon RDS 資料庫執行個體,請遵循以下步驟:

1.    啟動並設定 EC2 執行個體,然後進行執行個體的網路設定。

2.    設定 RDS 資料庫執行個體的安全群組。

3.    從本機電腦連線至 RDS 資料庫執行個體。

**重要:**若要連線至私有 Amazon RDS 或 Amazon Aurora 資料庫執行個體,最好使用 VPNAWS Direct Connect。如果您無法使用這些選項,請使用堡壘主機。以下範例組態使用安全群組來限制存取。不過,您可以限制子網路的網路存取控制清單 (network ACL),使連線更加安全。您也可以限制網際網路閘道的路由範圍,使其使用較小的範圍,而非 0.0.0.0/0。例如,當您新增網際網路閘道時,可在目標的路由表中僅新增所需的 CIDR 範圍。如需詳細資訊,請參閱範例路由選項

解決方案

以下範例組態適用於 Amazon Virtual Private Cloud (Amazon VPC) 中的 Amazon RDS for MySQL 執行個體。該執行個體設有安全群組供 EC2 執行個體使用。

啟動並設定 EC2 執行個體

1.    開啟 Amazon EC2 主控台,然後選擇 Launch instance (啟動執行個體)。

2.    選擇 Amazon Machine Image (AMI)。

3.    選擇執行個體類型,然後選擇Next: Configure Instance Details (下一步:設定執行個體詳細資訊)。

4.    針對 Network (網路),選擇 RDS 資料庫執行個體使用的 VPC。

5.    針對 Subnet (子網路),選取在其路由表中有網際網路閘道的子網路。如果您還沒有網際網路閘道,則可以在建立 EC2 執行個體後將其新增至子網路。

6.    對於 Auto-assign public IP (自動指派公用 IP),請確定已選取 Enable (啟用)。

7.    選擇 Next: Add Storage (下一步:新增儲存),然後按需修改儲存。

8.    選擇 Next: Add Tags (下一步:新增標籤),然後按需新增標籤。.

9.    依次選擇 Next: Configure Security Group (下一步:設定安全群組)、Add Rule (新增規則),然後輸入以下內容: Type (類型):輸入 Custom TCP Rule (自訂 TCP 規則)。 Protocol (通訊協定):輸入 TCPPort Range (連接埠範圍):輸入 22Source (來源):輸入您本機電腦的 IP 地址。依預設,來源 IP 地址對所有人開放,但可以限制對本機公有 IP 地址的存取。

10.    選擇 Review and Launch (檢閱並發佈)。

11.    選擇 Launch (啟動)。

設定 RDS 資料庫執行個體的安全群組

備註:若要使一或多個 EC2 執行個體自動連線至 RDS 資料庫,請參閱使 EC2 執行個體自動連線至 RDS 資料庫

1.    開啟 Amazon RDS console (Amazon RDS 主控台),然後從導覽窗格選擇 Databases (資料庫)。

2.    選擇 RDS 資料庫執行個體的名稱。或者,建立 RDS 資料庫執行個體 (如果您還沒有的話)。

3.    選擇 Connectivity & security (連線與安全) 索引標籤。

4.    從 Security (安全性) 區段,選擇 VPC security groups (VPC 安全群組) 下的連結。

5.    選取安全群組,選擇 Actions (動作),然後選擇 Edit inbound rules (編輯傳入規則)。

6.    選擇 Add rule (新增規則),然後輸入以下內容: Type (類型):輸入 Custom TCP Rule (自訂 TCP 規則)。 Protocol (通訊協定):輸入 TCPPort Range (連接埠範圍):輸入 RDS 資料庫執行個體的連接埠。 Source (來源):輸入 EC2 執行個體的私有 IP 地址。

7.    選擇 Save (儲存)。

安全群組的此組態允許來自 EC2 執行個體的私有 IP 地址。如果 EC2 執行個體和 RDS 資料庫執行個體使用相同的 VPC,則您無需修改 RDS 資料庫執行個體的路由表。如果 VPC 不同,則建立 VPC 對等互連以允許這些 VPC 之間的連線。

備註:如果您使用更具擴展性的解決方案,請謹慎對待。例如,如果您在安全群組規則中使用安全群組 ID,請確認其不會限制對某個執行個體的存取。相反,將規則設定為限制對使用特定安全群組 ID 的任何資源的存取。

從您的本機電腦連接至 RDS 資料庫執行個體

視您所用的用戶端而定,連線至 RDS 資料庫執行個體的步驟可能有所不同。如需詳細資訊,請參閱連線至 Amazon RDS 資料庫執行個體。如果您使用 MySQL,最佳實務是使用 SSL 對用戶端應用程式和 Amazon RDS 之間的連線加密。

以下範例使用 MySQL Workbench 用戶端連接至堡壘主機:

1.    開始新連線,然後選取 Standard TCP/IP over SSH (標準 TCP/IP over SSH) 作為連線方法

2.    針對 SSH 設定,輸入以下有關 EC2 執行個體的詳細資訊: Auto-assign Public IP (自動指派公有 IP):確認針對 DNS Hostnames (DNS 主機名稱) 選項已選取 Enable (啟用)。 SSH Hostname (SSH 主機名稱):輸入 EC2 執行個體的公有 DNS 名稱或其公有 IP 地址。 SSH Username (SSH 使用者名稱):輸入 EC2 執行個體的使用者名稱。例如,ec2-user 為 EC2 Linux 機器的使用者名稱。 SSH Key File (SSH 金鑰檔案):選取建立 EC2 執行個體時使用的私有金鑰。 **備註:**如果建立 EC2 執行個體的 VPC 已啟用 DNS Hostnames (DNS 主機名稱),則使用公有 IP 地址啟動的 EC2 執行個體會具有公有 DNS。

3.    為 MySQL 執行個體設定輸入以下詳細資訊: MySQL Hostname (MySQL 主機名稱):輸入 RDS 資料庫執行個體端點。 MySQL Server port (MySQL 伺服器連接埠):輸入 3306。或者,如果您使用自訂連接埠,請輸入自訂連接埠編號。 Username (使用者名稱):輸入 RDS 資料庫執行個體的使用者名稱。 Password (密碼):輸入 RDS 資料庫執行個體的密碼。

4.    選擇 Test Connection (測試連線)。

5.    連線成功後,輸入連線名稱,然後儲存連線。

要使用 SSH 通道從本地 MySQL 用戶端連線到私有 RDS 執行個體,請參閲以下命令。

Linux 或 MacOS:

1.    若要設定 SSH 通道,執行下列命令:

ssh -i "YOUR_EC2_KEY" -L LOCAL_PORT:RDS_ENDPOINT:REMOTE_PORT EC2_USER@EC2_HOST -N -f

**備註:**請使用相關資訊取代 YOUR_EC2_KEYLOCAL_PORTRDS_ENDPOINTREMOTE_PORTEC2_USEREC2_HOST

在上述命令中完成自訂欄位後,該命令看起來類似下列範例:

ssh -i "ec2Key.pem" -L 3336:rdsinstance.xxx.xxx.rds.amazonaws.com:3306 ec2-user@ec2-34-244-136-223.xxxcompute.amazonaws.com -N -f

2.    若要測試並確認通道是否在本機連接埠上接聽,請執行下列命令:

lsof -i4 -P | grep -i "listen" | grep LOCAL_PORT
nc -zv 127.0.0.1 LOCAL_PORT

**備註:**請將 LOCAL_PORT 取代為本機連接埠的編號。

3.    如果您的通道在本機連接埠上成功接聽,您會看到類似下列內容的輸出:

lsof -i4 -P | grep -i "listen" | grep 3336
ssh       17692 user    8u  IPv4 0x3bc46bcfeffce12f      0t0  TCP localhost:3336 (LISTEN)

nc -zv 127.0.0.1 3336
Connection to 127.0.0.1 port 3336 [tcp/directv-tick] succeeded!

4.    使用 EC2 執行個體做為堡壘主機,執行下列命令,從本機機器連線到 RDS 執行個體:

mysql -h 127.0.0.1 -P LOCAL_PORT -u RDS_USER -p

**備註:**請將 LOCAL_PORT 取代為本機連接埠的編號,並將 DB_USER 取代為您的 RDS 資料庫使用者名稱。


相關資訊

如何解決連線至 Amazon RDS 資料庫執行個體時發生的問題?