会话管理是云助手提供的功能,用于便捷安全地远程连接ECS实例。本文介绍如何通过会话管理CLI将网络流量从本地端口转发到ECS实例。
前提条件
- 需要连接的目标实例中已安装云助手Agent,并且Windows客户端版本大于等于2.1.3.256、Linux客户端版本大于等于2.2.3.256。具体操作,请参见安装云助手Agent。
- 已开启会话管理功能,具体操作,请参见通过会话管理连接实例。
背景信息
使用会话管理CLI进行端口转发,不需要实例公网IP,只需要实例ID和端口参数指定目标实例的端口号,即可通过会话管理客户端将网络流量从本地端口转发到实例端口。可以便捷安全地访问实例上的服务。关于会话管理更多信息,请参见会话管理概述。
会话管理客户端支持Linux、macOS和Windows操作系统,不同操作系统使用方式不同,具体说明如下:
Linux、macOS操作系统
- 登录会话管理客户端。
- 在会话管理客户端安装ali-instance-cli。不同操作系统的客户端安装方式不同,具体说明如下:
- Linux
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/linux/ali-instance-cli chmod a+x ali-instance-cli
- macOS:
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/mac/ali-instance-cli chmod a+x ali-instance-cli
- Linux
- 配置AccessKey、STS Token或CredentialsURI。关于如何获取AccessKey或STS Token,请参见创建AccessKey和什么是STS。
- 切换到test目录。
cd /home/test
- 配置鉴权认证方式。
支持以下三种配置方式:
- AccessKey配置方式执行如下命令,根据界面提示,输入AccessKey ID、AccessKey Secret、RegionID。
./ali-instance-cli configure --mode AK
- STS Token配置方式说明 region、ak、sk、token要修改为实际的Region ID、AccessKey ID、AccessKey Secret和STS Token。
./ali-instance-cli configure set --mode StsToken --region "region" --access-key-id "ak" --access-key-secret "sk" --sts-token "token"
- CredentialsURI配置方式执行如下命令,根据界面提示,输入CredentialsURI和RegionID。说明 CredentialsURI为您配置的认证服务器的地址。
./ali-instance-cli configure --mode=CredentialsURI
当回显出现如图所示内容时,说明鉴权方式已配置完成。 - AccessKey配置方式
- 切换到test目录。
- 执行如下命令,将本地端口转发到ECS实例。
./ali-instance-cli portforward -i "instance id" -l 8080 -r 80
说明 本示例将本地8080端口转发到ECS实例的80端口为例,介绍如何使用会话管理进行端口转发。您也可以根据需要,使用其他端口,instance id请替换成目标实例ID。当回显如下图所示时,说明已经通过会话管理建立起了本地端口到实例端口的转发通路。
Windows操作系统
使用会话管理客户端的Windows操作系统已安装OpenSSH,具体操作,请参见使用云助手在Windows实例中安装OpenSSH程序。
- 登录会话管理客户端。具体操作,请参见连接方式概述。
- 在会话管理客户端下载ali-instance-cli。
下载Windows版ali-instance-cli并保存到本地文件夹中,如
C:\Users\test
。 - 创建
config
文件并添加相关配置。- 在C:\Users\username下创建
.ssh
文件夹。说明 C:\Users\username需替换成实际的文件夹,如C:\Users\test
。 - 在
.ssh
文件夹下创建config
文件。 - 在
config
文件中添加如下内容。ali-instance-cli.exe需要替换成文件的绝对路径,例如
C:\Users\test\ali-instance-cli.exe
。host i-* ProxyCommand C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "ali-instance-cli.exe ssh -i '%h' --port '%p'"
- 在C:\Users\username下创建
- 配置AccessKey或STS Token。关于如何获取AccessKey或STS Token,请参见创建AccessKey和什么是STS。
- 选择cmd,按
Enter
键,打开命令提示符窗口。 ,输入 - 切换到test目录。
cd C:\Users\test
- 配置鉴权认证方式。
支持以下三种配置方式:
- AccessKey配置方式执行如下命令,根据界面提示,输入AccessKey ID、AccessKey Secret、RegionID。
ali-instance-cli.exe configure --mode AK
- STS Token配置方式说明 region、ak、sk、token要修改为实际的Region ID、AccessKey ID、AccessKey Secret和STS Token。
ali-instance-cli.exe configure set --mode StsToken --region "region" --access-key-id "ak" --access-key-secret "sk" --sts-token "token"
- CredentialsURI配置方式执行如下命令,根据界面提示,输入CredentialsURI和RegionID。
ali-instance-cli.exe configure --mode=CredentialsURI
当回显出现如图所示内容时,说明鉴权方式已配置完成。
- AccessKey配置方式
- 选择cmd,按
- 执行如下命令,将本地端口转发到ECS实例。
ali-instance-cli.exe portforward -i "instance id" -l 8080 -r 80
说明 本示例将本地8080端口转发到ECS实例的80端口为例,介绍如何使用会话管理进行端口转发。您也可以根据需要,使用其他端口,instance id请替换成目标实例ID。当回显如下图所示时,说明已经通过会话管理建立起了本地端口到实例端口的转发通路。
使用示例:访问实例上的MySQL服务
假设您的ECS实例上正在运行着MySQL服务,服务端口为3306。本地系统为Linux,端口为33306,利用ali-instance-cli可以通过本地端口访问到实例上的MySQL服务
- 运行以下命令,将本地的33306端口转发到实例的3306端口。
./ali-instance-cli portforward -i "instance id" -l 33306 -r 3306
当回显如下图所示时,说明已经通过会话管理建立起了本地端口到实例端口的转发通路。 - 执行如下命令,即可在本地访问到实例上的MySQL服务。
mysql -uroot -h127.0.0.1 -ppassword --port=33306
说明 password请替换成实际的MySQL密码。当回显如下图所示时,说明已在本地访问到实例上的MySQL服务。同时,ali-instance-cli日志中显示接收到了新的连接,也就是上面MySQL客户端发起的连接。 - 执行
exit
命令,退出MySQL连接。同时,ali-instance-cli日志中也会显示连接已关闭。
常见问题
当使用会话管理客户端出现问题时,您可以通过查看log分析具体问题。
- 查看会话管理客户端的日志:当前log目录,如
/home/test/log/aliyun_ecs_session_log.2022XXXX
。 - 查看云助手Agent日志:
- Linux
/usr/local/share/aliyun-assist/云助手版本号/log/
- Windows
C:\ProgramData\aliyun\assist\云助手版本号\log
- Linux
若会话管理功能未开启,使用会话管理客户端连接远程实例,会出现ssh_exchange_identification: Connection closed by remote host
的错误提示。并且,会话管理客户端的日志里面会出现session manager is disabled, please enable first
。请通过控制台开启会话管理功能,具体操作,请参见通过会话管理连接实例。