會話管理CLI(ali-instance-cli)通過雲助手與WebSocket實現TCP連接埠轉寄,該功能既支援直接存取無公網IP的執行個體中的商務服務,也支援以跳板機方式訪問其他私網服務。
應用情境
情境一:訪問無公網ECS執行個體中的服務。 將無公網ECS執行個體的服務連接埠(如Nginx的 | 情境二:以某台執行個體為跳板,訪問其他私網主機上的服務。 對於RDS MySQL資料庫等其他私網服務,無法直接建立連接埠轉寄通道。因此需要選擇一台與目標服務網路互連的ECS執行個體作為跳板機,通過該執行個體的網路能力訪問其他私網服務。 |
連接埠轉寄會話依賴於啟動並執行命令列視窗。請保持該視窗開啟,一旦關閉,轉寄將立即終止。
情境一:訪問無公網ECS執行個體中的服務
確保已完成準備工作且已安裝&配置會話管理CLI的情況下,執行以下操作。
本地為Windows環境
在PowerShell中,進入ali-instance-cli.exe所在目錄,執行以下命令。
#將INSTANCE_ID替換為需要連接埠轉寄的執行個體的ID,將TARGET_PORT替換為目標ECS執行個體的連接埠,將LOCAL_PORT替換為需要映射到原生連接埠。
.\ali-instance-cli.exe portforward -i INSTANCE_ID -r TARGET_PORT -l LOCAL_PORT輸出Waiting for connections,表示連接埠轉寄已就緒。此時訪問127.0.0.1:<local_port>相當於訪問執行個體中<ecs_port>連接埠的服務。
以將目標ECS執行個體i-bp1******上Nginx預設連接埠80轉寄到原生8080為例,需執行.\ali-instance-cli.exe portforward -i i-bp1****** -r 80 -l 8080。
本地為macOS/Linux環境
在終端中,進入ali-instance-cli所在目錄,執行以下命令。
#請將INSTANCE_ID替換為需要連接埠轉寄的執行個體的ID,將TARGET_PORT替換為目標ECS執行個體的連接埠,將LOCAL_PORT替換為需要映射到原生連接埠。
./ali-instance-cli portforward -i INSTANCE_ID -r TARGET_PORT -l LOCAL_PORT輸出Waiting for connections,表示連接埠轉寄已就緒。此時訪問127.0.0.1:<local_port>相當於訪問執行個體中<ecs_port>連接埠的服務。
以將目標ECS執行個體i-bp1******上Nginx預設連接埠80轉寄到原生8080為例,需執行./ali-instance-cli portforward -i i-bp1****** -r 80 -l 8080。
情境二:以某台執行個體為跳板,訪問其他私網主機上的服務
確保已完成準備工作且已安裝&配置會話管理CLI的情況下,執行以下操作。
本地為Windows環境
開啟PowerShell,進入ali-instance-cli.exe所在目錄,執行以下命令:
#請將INSTANCE_ID替換為作為跳板機執行個體的ID,將TARGET_IP替換為目標主機的IP,將TARGET_PORT替換為目標主機的連接埠,將LOCAL_PORT替換為需要映射到原生連接埠。
.\ali-instance-cli.exe portforward -i INSTANCE_ID -r TARGET_IP:TARGET_PORT -l LOCAL_PORT輸出Waiting for connections,表示跳板通道已建立。此時訪問127.0.0.1:<local_port>,流量將經跳板機轉寄至<target_ip>:<target_port>。
以通過ECS跳板機i-bp1******,將RDS MySQL的內網地址rm-******:3306轉寄至本地的13306連接埠為例。需執行.\ali-instance-cli.exe portforward -i i-bp1****** -r rm-******.mysql.rds.aliyuncs.com:3306 -l 13306
本地為macOS/Linux環境
開啟終端,進入ali-instance-cli所在目錄,執行以下命令。
#請將INSTANCE_ID替換為作為跳板機執行個體的ID,將TARGET_IP替換為目標主機的IP,將TARGET_PORT替換為目標主機的連接埠,將LOCAL_PORT替換為需要映射到原生連接埠。
./ali-instance-cli portforward -i INSTANCE_ID -r TARGET_IP:TARGET_PORT -l LOCAL_PORT輸出Waiting for connections,表示跳板通道已建立。此時訪問127.0.0.1:<local_port>,流量將經跳板機轉寄至<target_ip>:<target_port>。
以將ApsaraDB RDS for MySQL的執行個體(內網地址rm-******.mysql.rds.aliyuncs.com:3306)通過ECS執行個體跳板機i-bp1******映射至本地13306連接埠。需執行./ali-instance-cli portforward -i i-bp1****** -r rm-******.mysql.rds.aliyuncs.com:3306 -l 13306
常見問題
執行命令後卡住沒反應(執行個體非運行中狀態)
如果執行ali-instance-cli命令後命令列卡住沒反應,可能是執行個體沒有處於運行中狀態,如何查看執行個體狀態,請參見本文準備工作章節下的檢查執行個體運行狀態是否為運行中。
執行命令後卡住沒反應(安全性群組設定問題)
如果執行ali-instance-cli命令後命令列卡住沒反應,可能是沒有在安全性群組出方向放通對應的連接埠。預設情況下普通安全性群組會在出方向放通所有連接埠的訪問,如果更改了出方向規則或者使用了企業安全性群組,則可能會出現該問題。相關安全性群組說明如下:
通過會話管理串連ECS執行個體時,需要確保ECS中啟動並執行雲助手Agent與雲助手服務端的網路連通性,即在安全性群組出方向設定以下規則:
與SSH、RDP等串連方式不同,由於會話管理是由雲助手Agent主動與會話管理服務端建立WebSocket串連,因此僅需允許存取出方向的雲助手服務端的WebSocket連接埠。關於會話管理的原理,請參見會話管理工作原理。
如果使用普通安全性群組(包括預設安全性群組),預設情況下會允許存取所有的出方向流量,無需配置。
如果使用企業安全性群組,預設情況下會禁用所有出方向的流量,需要配置以下規則。更多關於企業安全性群組的說明,請參見普通安全性群組與企業級安全性群組。
添加安全性群組規則的具體操作,請參見添加安全性群組規則。
授權策略 | 優先順序 | 協議類型 | 連接埠範圍 | 授權對象 | 描述 |
允許 | 1 | 自訂TCP | 443 |
| 用於訪問雲助手服務端。 |
允許 | 1 | 自訂TCP | 443 |
| 訪問雲助手Agent安裝包所在伺服器,用於安裝或更新雲助手Agent。 |
允許 | 1 | 自訂UDP | 53 |
| 用於解析網域名稱。 |
此外,如果計劃僅通過會話管理串連執行個體,為了增加ECS執行個體的安全性,可以取消允許存取安全性群組入方向上的SSH連接埠(預設22)或者RDP連接埠(預設3389)的規則。
執行命令後出現DeliveryTimeout提示(雲助手Agent不線上)
如果執行ali-instance-cli的命令時出現DeliveryTimeout提示,可能是雲助手Agent不線上,檢查雲助手狀態,請參見檢查執行個體雲助手Agent是否已安裝。
執行命令報錯session manager is disabled, please enable first
如果執行ali-instance-cli的命令出現session manager is disabled, please enable first報錯,代表會話管理功能未開啟,請通過控制台開啟會話管理功能,具體操作,請參見開啟會話管理服務。
如何分析ali-instance-cli的日誌
當使用會話管理CLI出現問題時,可以通過查看log分析具體問題。
查看會話管理CLI工具的日誌:在使用會話管理CLI(ali-instance-cli)時,會在該工具所在目錄下產生log目錄,如
~/log/aliyun_ecs_session_log.2022XXXX,可以進入該目錄查看相關日誌。查看雲助手Agent日誌:
Linux
/usr/local/share/aliyun-assist/雲助手版本號碼/log/Windows
C:\ProgramData\aliyun\assist\雲助手版本號碼\log