如何透過 AWS Systems Manager 使用 SSH 通道來存取私有 VPC 資源?

3 分的閱讀內容
0

我想要透過 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

先決條件

完成 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.1localport 轉換為存取 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-pairusername 適用於您想要以通道傳輸至的執行個體 (在此範例中為 「執行個體 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。


相關資訊

在沒有網際網路閘道的情況下自動化 Session Manager 的組態

session-manager-without-igw

使用您偏好的 GUI 從遠端安全地連接至 Amazon RDS 或 Amazon EC2 資料庫執行個體

AWS 官方
AWS 官方已更新 2 年前