首页 云服务器 ECS 操作指南 实例 连接实例 通过会话管理连接实例

通过会话管理连接实例

更新时间: 2024-12-17 14:07:17

会话管理是阿里云为您提供的免费的连接实例的工具,该工具基于云助手和WebSocket等技术实现,支持一键免密码、免跳板机连接到无公网实例。本文为您介绍会话管理的使用场景以及注意事项。

什么是会话管理

重要

会话管理本身不收费,但如果需要保存会话管理操作记录,需开启会话操作记录投递功能,这将产生数据存储费用,开启该功能的具体操作,请参见会话操作记录投递

会话管理是阿里云为您提供的免费的连接实例的工具,该工具主要特点如下:

登录用户说明

通过会话管理连接实例时,Linux实例默认以ecs-assist-user用户登录,Windows实例默认以system用户登录,具体说明如下。

  • ecs-assist-user:Linux系统的一个普通用户,没有系统级的权限,只能执行被授权的操作,但可以通过使用sudo命令临时获得root权限执行操作。

  • system:Windows系统的一个本地系统账户,拥有系统最高权限。

使用限制&前提条件

  • 仅支持连接到运行中状态的实例。

  • 实例需安装云助手Agent:会话管理基于云助手的功能实现,需要在实例中安装云助手Agent

    2017年12月01日之后使用官方公共镜像创建的ECS实例,默认预装了云助手Agent。如果您的实例是2017年12月01日之前购买的或使用自行上传的自定义镜像创建的实例,若需要使用云助手相关功能,需自行安装云助手Agent,具体操作,请参见安装云助手Agent
  • 使用前请确保网络连通:由于云助手Agent会通过WebSocket协议与云助手服务端通讯,需要确保实例与云助手服务端的网络连通性,具体说明,请参见相关安全组设置

更多功能&适用场景

  • 通过端口转发访问无公网服务

    使用会话管理客户端的端口转发功能,将实例的某个服务端口映射到您的本机,然后您可以直接通过访问本机的对应端口访问在ECS上的服务。比如访问内网部署的Web后端服务、通过SSH连接内网实例。具体操作,请参见通过会话管理CLI的端口转发访问无公网实例

  • 向实例添加临时SSH公钥

    在您使用SSH连接实例时,您可以使用会话管理向实例内添加有效时间60s的临时公钥,然后通过密钥对的验证方式连接到实例。具体操作,请参见通过会话管理CLI注册临时公钥免密登录实例

  • 会话操作记录投递

    如果您是多人使用场景,可以通过会话操作记录投递功能,查看某个人的操作记录,便于您在后续进行操作审计。开启会话操作记录投递功能,请参见会话操作记录投递

会话管理工作原理

如图所示,在通过会话管理连接实例时,会话管理客户端和ECS实例将分别与云助手服务端建立WebSocket连接。一旦连接建立,您每次输入的命令都会经过云助手服务端转发至实例,由实例中的云助手Agent代为执行。

图中涉及的模块

  • 云助手客户端:指您实际操作的客户端工具,如控制台上的会话管理、您本机的ali-instance-cli、阿里云客户端等。

  • 云助手服务端:会话管理基于云助手实现,负责权限管理、会话状态管理。

  • ECS实例中的云助手Agent:负责命令的执行。

细节说明

  • 会话管理客户端云助手服务端建立WebSocket连接时(对应步骤2~4),服务端会进行鉴权,判断操作者有没有通过会话管理连接到该实例的权限。相关权限说明,请参见相关权限管理

  • ECS中的云助手Agent云助手服务端建立WebSocket连接时(对应步骤5~6),是由云助手服务端通知Agent建立连接后,云助手Agent主动和云助手服务端建立连接。

    因此,无需关注ECS实例安全组入方向的规则,仅需关注出方向上可以访问云助手服务端的对应WebSocket连接端口。相关安全组配置说明,请参见相关安全组设置

安全性

  • 加密:会话管理客户端与云助手服务端、云助手服务端与云助手Agent之间通信时,会通过WSS(Web Socket Secure)协议建立WebSocket长连接,WSS使用SSL(Secure Socket Layer)加密WebSocket长连接,能够保障数据的安全。

  • 鉴权:仅使用会话管理功能远程连接实例时无需管理密码,无密码泄露的风险。不同于SSH、VNC等需要通过用户名密码进行鉴权,会话管理采用RAM进行鉴权。相关权限说明,请参见相关权限管理

  • 网络:由于云助手Agent与云助手服务端之间通过WebSocket连接,不需要通过SSH、VNC等方式登录ECS实例,所以不需要打开ECS实例的入方向端口,进一步提高了ECS实例的安全性。

image

基本使用流程

相关权限管理

如果RAM用户需要通过会话管理连接实例,相关操作的权限及说明如下:

操作(Action)列对应RAM权限策略中的操作(Action)。

操作(Action)

说明

ecs:StartTerminalSession

通过会话管理功能连接到ECS实例。(必须)

ecs:DescribeCloudAssistantStatus

查询ECS实例是否安装云助手Agent,该权限用于控制台在连接前进行校验。

ecs:DescribeUserBusinessBehavior

查询会话管理是否开启,该权限用于控制台在连接前进行校验。

ecs:ModifyCloudAssistantSettings

开启或关闭会话管理,如果当前阿里云账号已经开启会话管理功能,无需分配该权限。

权限策略示例

示例一:在控制台使用会话管理

如果RAM用户需要在控制台使用会话管理连接实例,根据最小授权原则,需要具有以下权限。

  • ecs:StartTerminalSession:通过会话管理连接实例的权限,此外,可以通过Resource字段,限制RAM用户可连接(会话管理)的ECS实例。

  • ecs:DescribeCloudAssistantStatus:查询ECS实例是否需要安装云助手,该权限用于控制台在连接前进行校验。

  • ecs:DescribeUserBusinessBehavior:查询会话管理功能是否已经开启,该权限用于控制台在连接前进行校验。

  • ecs:ModifyCloudAssistantSettings(可选):打开或关闭会话管理的权限,如果当前阿里云账号已经开通会话管理,无需分配该权限。

自定义权限策略示例如下:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ecs:StartTerminalSession",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ecs:DescribeUserBusinessBehavior",
        "ecs:DescribeCloudAssistantStatus",
        "ecs:ModifyCloudAssistantSettings"
      ],
      "Resource": "*"
    }
  ]
}

为RAM用户授权,请参见为RAM用户授权

示例二:通过ali-instance-cli使用会话管理

在使用 ali-instance-cli 工具时,配置阶段要求设置RAM用户的AccessKeySTS Token。当通过会话管理操作连接实例时,系统会验证此凭证对应的RAM用户是否拥有ecs:StartTerminalSession权限,这是允许通过会话管理建立与ECS实例连接的必要权限。

此外,在自定义权限策略时,可以通过指定Resource字段来限定RAM用户能够通过会话管理连接的具体ECS实例。权限策略示例如下:

{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "ecs:StartTerminalSession",
      "Resource": "*"
    }
  ]
}

关于CredentialsURISTS Token的更多说明,请参见创建AccessKey什么是STS

为RAM用户授权,请参见为RAM用户授权

相关安全组设置

通过会话管理连接ECS实例时,需要确保ECS中运行的云助手Agent与云助手服务端的网络连通性,即在安全组出方向设置以下规则:

与SSH、RDP等连接方式不同,由于会话管理是由云助手Agent主动与会话管理服务端建立WebSocket连接,因此仅需放行出方向的云助手服务端的WebSocket端口。关于会话管理的原理,请参见会话管理工作原理
重要
  • 如果使用普通安全组(包括默认安全组),默认情况下会放行所有的出方向流量,无需配置

  • 如果使用企业安全组,默认情况下会禁用所有出方向的流量,需要配置以下规则。更多企业安全组的说明,请参见普通安全组与企业级安全组

添加安全组规则的具体操作,请参见添加安全组规则

授权策略

优先级

协议类型

端口范围

授权对象

描述

允许

1

自定义TCP

443

100.100.0.0/16

用于访问云助手服务端。

允许

1

自定义TCP

443

100.0.0.0/8

访问云助手Agent安装包所在服务器,用于安装或更新您的云助手Agent

允许

1

自定义UDP

53

0.0.0.0/0

用于解析域名。

此外,如果您计划仅通过会话管理连接实例,为了增加ECS实例的安全性,您可以取消放行安全组入方向上的SSH端口(默认22)或者RDP端口(默认3389)的规则。

在自己的应用中集成会话管理远程登录功能

通过会话管理远程连接到云服务器或托管实例的完整代码,请参考开源项目cloud-assistant-starter。本项目中AxtSession.tsx文件包含了调用APIStartTerminalSession - 开始终端会话获取WebSocketURL并建立连接的示例代码,将这段代码移植到您自己的企业应用中,即可使用会话管理连接实例。

上一篇: 命令行审计 下一篇: 在控制台通过会话管理连接实例
阿里云首页 云服务器 ECS 相关技术圈