您可以使用會話管理CLI(ali-instance-cli),以命令列的方式,將執行個體的某個連接埠轉寄到本機,通過雲助手間接訪問執行個體中的商務服務,支援訪問無公網執行個體。本文為您介紹通過會話管理CLI進行連接埠轉寄,訪問無公網執行個體。
什麼是連接埠轉寄?
會話管理CLI(ali-instance-cli)的連接埠轉寄功能,雲端式助手實現,可以將某台執行個體的連接埠映射到本機(即在主機安裝ali-instance-cli),此外,也可以將某台執行個體作為跳板機,映射其他網路可達主機的連接埠,從而訪問無公網或者私網環境中部署的服務。
情境一:遠端連線無公網執行個體
可以通過連接埠轉寄功能,將無公網ECS執行個體的遠端存取連接埠映射到本地,通過工具訪問本地的對應連接埠,實現串連無公網執行個體。
如果您的執行個體開通了公網IP,使用該方式串連執行個體時,您可以在安全性群組禁用執行個體的遠端存取連接埠,增加執行個體安全性。
情境二:訪問無公網執行個體中的服務
可以通過連接埠轉寄功能,將無公網ECS執行個體的某個服務連接埠,如Nginx、Apache等服務的連接埠,映射到原生某個連接埠,通過訪問本機連接埠,實現訪問無公網執行個體中部署的服務。
情境三:以某台執行個體為跳板,訪問其他主機上的服務
可以通過連接埠轉寄功能,以某台執行個體為跳板,訪問和該執行個體處於同一VPC下某個網路主機上的服務。例如訪問私網部署的MySQL服務。
連接埠轉寄實現原理
| |
|
準備工作
開啟會話管理服務
檢查執行個體運行狀態是否為運行中
檢查執行個體雲助手Agent是否已安裝
準備用於使用會話管理的RAM使用者的憑證
1. 安裝&配置會話管理CLI
如果您已經安裝並配置完成會話管理CLI,可跳過本步驟。
1.1 安裝
首先需要在您的個人電腦中安裝會話管理CLI(ali-instance-cli),不同作業系統安裝方式不同,具體操作如下。
Windows
點擊下載Windows版ali-instance-cli,並儲存到本地檔案夾中。
本文以將ali-instance-cli.exe儲存在C:\Users\test
檔案夾中為例。
macOS
在macOS的終端中,輸入以下命令下載mac版ali-instance-cli。
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/mac/ali-instance-cli
下載完成後,輸入以下命令為ali-instance-cli賦予可執行許可權。
chmod a+x ali-instance-cli
Linux
輸入以下命令安裝Linux版ali-instance-cli。
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/linux/ali-instance-cli
下載完成後,輸入以下命令為ali-instance-cli賦予可執行許可權。
chmod a+x ali-instance-cli
1.2 配置
在您的個人電腦使用ali-instance-cli串連阿里雲執行個體時,需要配置相關身份憑證,即AccessKey,具體說明,請參見準備用於使用會話管理的RAM使用者的憑證。
Windows
選擇
,輸入cmd,按Enter
鍵,開啟命令提示字元視窗。切換到ali-instance-cli.exe所在目錄,本文以
C:\Users\test
為例。cd C:\Users\test
配置憑證。支援以下三種配置方式:
AccessKey
執行如下命令,並根據介面提示配置Access Key Id、Access Key Secret、Region Id。
ali-instance-cli.exe configure --mode AK
STS Token
執行以下命令完成配置操作:
ali-instance-cli.exe configure set --mode StsToken --region "<region>" --access-key-id "<ak>" --access-key-secret "<sk>" --sts-token "<sts_token>"
<region>
、<ak>
、<sk>
、<sts_token>
要修改為實際的Region ID、AccessKey ID、AccessKey Secret和STS Token
。CredentialsURI
執行如下命令,根據介面提示,輸入Credentials URI和Region Id。
ali-instance-cli.exe configure --mode=CredentialsURI
配置完成後,顯示如下內容證明配置完成。
macOS/Linux
進入ali-instance-cli所在目錄,本文以目前使用者根目錄
~
為例。cd ~
配置憑證。
AccessKey
執行如下命令,並根據介面提示配置Access Key Id、Access Key Secret、Region Id。
./ali-instance-cli configure --mode AK
STS Token
執行以下命令完成配置操作:
./ali-instance-cli configure set --mode StsToken --region "<region>" --access-key-id "<ak>" --access-key-secret "<sk>" --sts-token "<sts_token>"
<region>
、<ak>
、<sk>
、<sts_token>
要修改為實際的Region ID、AccessKey ID、AccessKey Secret和STS Token
。CredentialsURI
執行如下命令,根據介面提示,配置Credentials URI和Region Id。
./ali-instance-cli configure --mode=CredentialsURI
配置完成後,顯示如下內容證明配置完成。
2. 連接埠轉寄功能基本使用
2.1 擷取待轉送連接埠執行個體的ID
在開始連接埠轉寄之前,需要先擷取待轉送連接埠的執行個體ID,以供後續步驟使用。
控制台
|
阿里雲CLI
如果您已經配置好了阿里雲CLI,您可以通過以下命令擷取執行個體ID。具體參數說明,請參見DescribeInstances - 查詢執行個體的詳細資料列表。
以查詢杭州地區下名稱為SessionManager-example
的執行個體為例。
aliyun ecs DescribeInstances --region cn-hangzhou --RegionId 'cn-hangzhou' --InstanceName 'SessionManager-example'
返回結果中InstanceId
即執行個體ID。
API
通過API查詢執行個體ID,請參見DescribeInstances - 查詢執行個體的詳細資料列表。
2.2 使用連接埠轉寄
用法一:直接轉寄執行個體連接埠
本機為Windows
使用連接埠轉寄過程中請不要關閉命令提示字元視窗,關閉命令提示字元視窗後,連接埠轉寄也會終止。
進入命令提示字元,在ali-instance-cli.exe所在目錄,輸入命令開啟連接埠映射。
ali-instance-cli.exe portforward -i <instance_id> -r <target_port> -l <local_port>
在使用時,請將<instance_id>
替換為需要連接埠轉寄的執行個體的ID,將<target_port>
替換為目標ECS執行個體的連接埠,將<local_port>
替換為需要映射到原生連接埠。
如圖所示,連接埠轉寄成功後,會進入等待串連狀態,此時在本機訪問127.0.0.1:<local_port>
相當於訪問執行個體的<ecs_port>
連接埠的服務。
本機為macOS/Linux
使用連接埠轉寄過程中請不要關閉當前終端,關閉終端後,連接埠轉寄也會終止。
在終端中,進入ali-instance-cli所在目錄,輸入命令開啟連接埠映射。
./ali-instance-cli portforward -i <instance_id> -r <target_port> -l <local_port>
在使用時,請將<instance_id>
替換為需要連接埠轉寄的執行個體的ID,將<target_port>
替換為目標ECS執行個體的連接埠,將<local_port>
替換為需要映射到原生連接埠。
如圖所示,連接埠轉寄成功後,會進入等待串連狀態。此時在本機訪問127.0.0.1:<local_port>
相當於訪問執行個體的<target_port>
連接埠的服務。
用法二:以某台ECS執行個體為跳板機,轉寄其他主機的連接埠
您可以通過會話管理CLI與某台ECS執行個體建立會話管理串連,以該ECS執行個體為跳板機訪問其他主機的某個連接埠。
本機為Windows
使用連接埠轉寄過程中請不要關閉命令提示字元視窗,關閉命令提示字元視窗後,連接埠轉寄也會終止。
進入命令提示字元,在ali-instance-cli.exe所在目錄,輸入命令開啟連接埠映射。
ali-instance-cli.exe portforward -i <instance_id> -r <target_ip>:<target_port> -l <local_port>
在使用時,請將<instance_id>
替換為作為跳板機執行個體的ID,將<target_ip>
替換為目標主機的IP,將<target_port>
替換為目標主機的連接埠,將<local_port>
替換為需要映射到原生連接埠。
如圖所示,連接埠轉寄成功後,會進入等待串連狀態,此時在本機訪問127.0.0.1:<local_port>
相當於訪問主機地址為<target_ip>
連接埠號碼為<target_port>
的服務。
本機為macOS/Linux
使用連接埠轉寄過程中請不要關閉當前終端,關閉終端後,連接埠轉寄也會終止。
在終端中,進入ali-instance-cli所在目錄,輸入命令開啟連接埠映射。
./ali-instance-cli portforward -i <instance_id> -r <target_ip>:<target_port> -l <local_port>
在使用時,請將<instance_id>
替換為作為跳板機執行個體的ID,將<target_ip>
替換為目標主機的IP,將<target_port>
替換為目標主機的連接埠,將<local_port>
替換為需要映射到原生連接埠。
如圖所示,連接埠轉寄成功後,會進入等待串連狀態,此時在本機訪問127.0.0.1:<local_port>
相當於訪問主機地址為<target_ip>
連接埠號碼為<target_port>
的服務。
情境樣本
樣本一:遠端連線無公網執行個體
樣本架構
通過連接埠轉寄功能,您可以遠端連線無公網的ECS執行個體。
操作步驟
串連Linux執行個體
開啟連接埠轉寄。
首先需要將目標SSH服務的服務連接埠(預設為22)轉寄到原生8080。具體操作如下:
重要開啟連接埠轉寄後,關閉當前命令提示字元或終端會導致串連中斷。
本機為Windows
開啟命令提示字元,進入
ali-instance-cli.exe
工具所在目錄,輸入以下命令完成連接埠轉寄操作。ali-instance-cli.exe portforward -i i-bp1****** -r 22 -l 8080
本命令中,
-i
參數值i-bp1******
是被串連執行個體的ID,-r
參數值22
為執行個體SSH服務的遠端存取連接埠,-l
參數值的8080
代錶轉發到原生8080連接埠。本機為macOS/Linux
開啟終端,進入
ali-instance-cli
工具所在目錄,輸入以下命令完成連接埠轉寄操作。./ali-instance-cli portforward -i i-bp1****** -r 22 -l 8080
本命令中,
-i
參數值i-bp1******
是被串連執行個體的ID,-r
參數值22
為執行個體SSH服務的遠端存取連接埠,-l
參數值的8080
代錶轉發到原生8080連接埠。遠端連線執行個體。
開啟連接埠映射後,您可以直接存取原生8080連接埠遠端連線目標執行個體。
遠程主機地址:
127.0.0.1
。遠程主機SSH服務連接埠號碼:
8080
。
本樣本以使用OpenSSH用戶端為例,您可以根據偏好,選擇合適的遠端連線工具。
連接埠轉寄:
通過
127.0.0.1:8080
串連執行個體:
串連Windows執行個體
開啟連接埠轉寄。
首先需要將目標RDP服務的連接埠(預設為3389)轉寄到原生8080。具體操作如下:
重要開啟連接埠轉寄後,關閉當前命令提示字元或終端會導致串連中斷。
本機為Windows
開啟命令提示字元,進入
ali-instance-cli.exe
工具所在目錄,輸入以下命令完成連接埠轉寄操作。ali-instance-cli.exe portforward -i i-bp1****** -r 3389 -l 8080
本命令中,
-i
參數值i-bp1******
是被串連執行個體的ID,-r
參數值3389
為執行個體RDP服務的遠端存取連接埠,-l
參數值的8080
代錶轉發到原生8080連接埠。本機為macOS/Linux
開啟終端,進入
ali-instance-cli
工具所在目錄,輸入以下命令完成連接埠轉寄操作。./ali-instance-cli portforward -i i-bp1****** -r 3389 -l 8080
本命令中,
-i
參數值i-bp1******
是被串連執行個體的ID,-r
參數值3389
為執行個體RDP服務的遠端存取連接埠,-l
參數值的8080
代錶轉發到原生8080連接埠。遠端連線執行個體。
開啟連接埠映射後,您可以直接存取原生8080連接埠遠端連線目標執行個體。
遠端電腦:
127.0.0.1:8080
。
以使用Windows遠端桌面連線ECS執行個體為例,您可以根據您的偏好,選擇合適的遠端連線工具。
連接埠轉寄:
通過
127.0.0.1:8080
遠端連線Windows執行個體:
樣本二:訪問某台無公網ECS上的Nginx服務
樣本架構
操作步驟
開啟連接埠轉寄。
首先需要將目標Nginx服務的連接埠(80)轉寄到原生8080。具體操作如下:
重要開啟連接埠轉寄後,關閉當前命令提示字元或終端會導致串連中斷。
本機為Windows
開啟命令提示字元,進入
ali-instance-cli.exe
工具所在目錄,輸入以下命令完成連接埠轉寄操作。ali-instance-cli.exe portforward -i i-bp1****** -r 80 -l 8080
本命令中,
-i
參數值i-bp1******
是被訪問執行個體的ID,-r
參數值80
為執行個體Nginx服務的連接埠,-l
參數值8080
代錶轉發到原生8080連接埠。本機為macOS/Linux
開啟終端,進入
ali-instance-cli
工具所在目錄,輸入以下命令完成連接埠轉寄操作。./ali-instance-cli portforward -i i-bp1****** -r 80 -l 8080
本命令中,
-i
參數值i-bp1******
是被訪問執行個體的ID,-r
參數值80
為執行個體Nginx服務的連接埠,-l
參數值8080
代錶轉發到原生8080連接埠。訪問Nginx服務。
以在瀏覽器訪問Nginx服務的預設頁面為例。
連接埠轉寄:
通過
http://127.0.0.1:80
訪問Nginx服務的預設頁面:
樣本三:以某台ECS為跳板,通過訪問私網MySQL服務
樣本說明
如圖所示,本樣本以ID為i-bp1******
的執行個體為跳板機,通過內網訪問ApsaraDB RDS for MySQL的MySQL資料庫執行個體,其中,RDS執行個體的內網地址為rm-******.mysql.rds.aliyuncs.com
。
本樣本已確保ECS與RDS的網路連通。
操作步驟
開啟連接埠轉寄。
首先需要將目標MySQL服務的服務連接埠(預設為3306)轉寄到原生13306。具體操作如下:
重要開啟連接埠轉寄後,關閉當前命令提示字元或終端會導致串連中斷。
本機為Windows
開啟命令提示字元,進入
ali-instance-cli.exe
工具所在目錄,輸入以下命令完成連接埠轉寄操作。ali-instance-cli.exe portforward -i i-bp1****** -r rm-******.mysql.rds.aliyuncs.com:3306 -l 13306
本命令中,
-i
參數值i-bp1******
是作為跳板機ECS執行個體的ID,-r
參數值rm-******.mysql.rds.aliyuncs.com:3306
為MySQL的內網訪問地址以及連接埠號碼,-l
參數值13306
代錶轉發到原生13306連接埠。本機為macOS/Linux
開啟終端,進入
ali-instance-cli
工具所在目錄,輸入以下命令完成連接埠轉寄操作。./ali-instance-cli portforward -i i-bp1****** -r rm-******.mysql.rds.aliyuncs.com:3306 -l 13306
本命令中,
-i
參數值i-bp1******
是作為跳板機ECS執行個體的ID,-r
參數值rm-******.mysql.rds.aliyuncs.com:3306
為MySQL的內網訪問地址以及連接埠號碼,-l
參數值13306
代錶轉發到原生13306連接埠。通過MySQL用戶端訪問MySQL資料庫。
開啟連接埠映射後,您可以直接存取原生13306連接埠,訪問目標主機上的MySQL服務。
以MySQL用戶端操作為例,您可以根據您的偏好,選擇合適的串連工具。
連接埠轉寄:
通過
127.0.0.1:13306
訪問MySQL服務: