如何透過 AWS Systems Manager 使用 SSH 通道來存取私有 VPC 資源?
我想要透過 AWS Systems Manager 使用 SSH 通道來存取私有 VPC 資源。我該如何執行?
簡短說明
若要建立 SSH 通道,您可以使用 Session Manager,這是 AWS Systems Manager 的一項功能,可讓您在遠端主機上使用連接埠轉遞。SSM Agent 3.1.1374.0 版和更新版本支援此功能。連接埠轉遞是下面步驟的替代方案。如需遠端主機連接埠轉遞的詳細資訊,請參閱啟動工作階段。
Session Manager 使用 Systems Manager 基礎架構,以建立類似 SSH 的執行個體工作階段。Session Manager 會以通道傳輸真正的 SSH 連線,讓您直接從本端電腦以通道傳輸至虛擬私有雲端 (VPC) 內的其他資源。您建立的受管執行個體充當 AWS 資源的堡壘主機或閘道。
此組態的優勢為:
- **提高安全性:**此組態僅使用一個 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體 (堡壘主機),並將出埠連接埠 443 連接至 Systems Manager 基礎架構。這可讓您在沒有任何入埠連線的情況下使用 Session Manager。本端資源必須僅允許來自作為堡壘主機的執行個體的入埠流量。因此,不需要公開開啟任何入埠規則。
- **易於使用:**您可以直接從本端電腦存取私有 VPC 中的資源。
**注意事項:**如需使用 Systems Manager 透過終端或單一連接埠轉遞存取 EC2 執行個體的指示,請參閱設定 Session Manager。
先決條件
安裝適用於 AWS Command Line Interface (AWS CLI) 的 Session Manager 外掛程式
允許透過 Session Manager 進行 SSH 連線,並確保符合 SSH 連線需求。
**注意事項:**您必須安裝下列項目才能使用 SSH 功能:
1. SSM Agent 2.3.672.0 版或更新版本。
2. 本端電腦上的 Session Manager 外掛程式 1.1.23 版或更新版本。
3. 本端電腦上的 AWS CLI 1.16.12 版或更新版本。
解決方案
若要使用 Session Manager 啟動 SSH 通道,請執行下列步驟:
**注意事項:**如果您在執行 AWS CLI 命令時收到錯誤,請確定您使用的是最新版本的 AWS CLI。
1. 若要啟動 SSH 通道,請執行下列命令:
ssh -i /path/my-key-pair.pem username@instance-id -L localport:targethost:destport
2. 若要在步驟 1 中建立的目標連接埠上測試通道的存取權,請執行下列命令:
telnet 127.0.0.1 localport
在上述範例中,127.0.0.1 和 localport 轉換為存取 targethost:destport。
範例組態
情況 1
使用 SSM 主機作為堡壘主機,從本端電腦建立通道,以存取在 EC2 執行個體上執行的 MySQL 資料庫。
使用的資源
執行個體 1: 作為堡壘主機並由 AWS Systems Manager 管理的 EC2 執行個體。
Hostname = ec2-198-51-100-1.compute-1.amazonaws.com Instance id = i-0123456789abcdefa
執行個體 2: 在預設連接埠 3306 上執行 MySQL 資料庫的 EC2 執行個體。
Hostname = ec2-198-51-100-2.compute-1.amazonaws.com
指示
1. 從本端電腦 (例如,您的筆記型電腦),使用 Session Manager 型 SSH 執行 SSH 命令以連接至「執行個體 1」。此命令會在「執行個體 2」上建立連接埠 3306 的通道,並將其顯示在連接埠 9090 上的本端電腦中。
ssh -i /path/key-pair_instance1.pem username_of_instance1@i-0123456789abcdefa -L 9090:ec2-198-51-100-2.compute-1.amazonaws.com:3306
**注意事項:**在上述範例中,連接埠 9090 可用於本端電腦。
2. 從本端電腦,透過用於步驟 1 中的可用連接埠存取資料庫 (在此範例中為 9090)。
mysql -u user -h 127.0.0.1 -P 9090 -p password
注意事項:「執行個體 2」上存在的任何「安全群組」、「網路存取控制清單 (網路 ACL)」、安全規則或第三方安全軟體都必須允許來自「執行個體 1」的流量。在上述範例中,「執行個體 2」必須允許從「執行個體 1」存取連接埠 3306。
情況 2
透過本端電腦的單一 SSH 連線建立三個通道,以便:
- 連接至「執行個體 1」中的 SSH 連接埠
- 存取「RDS 執行個體」中的 MySQL 資料庫
- 存取「執行個體 3」中的 Web 伺服器
使用的資源
執行個體 1: 作為堡壘主機並由 AWS Systems Manager 管理的 EC2 執行個體。
Hostname = ec2-198-51-100-1.compute-1.amazonaws.com Instance id = i-0123456789abcdefa
RDS 執行個體: 位於私有子網路中的 MySQL RDS 執行個體。
Hostname = DBinstanceidentifier.abcdefg12345.region.rds.amazonaws.com
執行個體 3: 位於私有子網路中的 EC2 執行個體
Hostname = ec2-198-51-100-3.compute-3.amazonaws.com
指示
1. 使用 SSH 命令啟動三個通道的工作階段。
**注意事項:**命令中有三個單獨的通道調用。
ssh -i /path/key-pair_instance1.pem username_of_instance1@i-0123456789abcdefa -L 8080:ec2-198-51-100-1.compute-1.amazonaws.com:22 -L 9090:DBinstanceidentifier.abcdefg12345.region.rds.amazonaws.com:3306 -L 9091:ec2-198-51-100-3.compute-1.amazonaws.com:80
注意事項: 在上述範例中,連接埠 8080、9090 和 9091 可用於本端電腦。
2. 從本端電腦存取 SSH 至「執行個體 1」。本端連接埠 8080 會以通道傳輸至「執行個體 1」上的 SSH 連接埠 (22)。key-pair 和 username 適用於您想要以通道傳輸至的執行個體 (在此範例中為 「執行個體 1」)。
ssh -i /path/key-pair_instance1.pem username_of_instance1@127.0.0.1 -p 8080
3. 存取「RDS 執行個體」上的資料庫。本端連接埠 9090 會以通道傳輸至「RDS 執行個體」上的連接埠 3306。您可以使用 MySQL Workbench,它允許您使用 GUI 存取資料庫伺服器,以 127.0.0.1 作為「主機名稱」,以 9090 作為「連接埠」。或者,在 Shell 命令提示字元中執行下列命令:
mysql -u user -h 127.0.0.1 -P 9090 -p password
4. 在本端電腦中,若要在「執行個體 3」上存取網站,請開啟瀏覽器並導覽至網站。
http://127.0.0.1:9091
重要事項:「RDS 執行個體」和「執行個體 3」上存在的任何「安全群組」、「網路 ACL」、安全規則或第三方安全軟體都必須允許來自「執行個體 1」的流量。在上述範例中,「執行個體 3」必須允許從「執行個體 1」存取連接埠 80。
相關資訊
相關內容
- 已提問 2 個月前lg...
- 已提問 2 年前lg...
- 已提問 1 年前lg...
- 已提問 9 個月前lg...
- AWS 官方已更新 7 個月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 4 年前