通过会话管理连接ECS实例

更新时间:

如果您需要实现免密码、免公网IP或无需开启SSH和RDP端口直接连接ECS实例,您可以通过会话管理来连接。会话管理相比SSH、VNC等方式,可以更便捷、安全地远程连接ECS实例。本文为您介绍如何通过会话管理连接ECS实例。

会话管理的工作原理说明,请参见会话管理概述

前提条件

使用会话管理功能需满足以下条件:

  • 该实例处于会话管理支持的地域,更多信息,请参见支持的地域

  • 如果通过RAM用户使用会话管理功能,请确保RAM用户拥有调用StartTerminalSession的权限。详细的权限策略示例,请参见权限策略示例

    重要

    免密登录更加便捷,但请在授权RAM用户时保持谨慎,避免因RAM用户管理或授权不当导致越权操作。

操作步骤

  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 实例

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 实例页面,找到待连接的实例,单击对应操作列的远程连接

  5. 单击展开其他登录方式,确保会话管理已开启(全地域),如果显示会话管理已关闭,请先打开功能开关。

    重要

    打开会话管理功能开关前,请确保RAM用户具有查看会话管理配置的DescribeUserBusinessBehavior权限和打开或关闭会话管理功能的ModifyUserBusinessBehavior权限,详细的权限策略示例,请参见权限策略示例

    session-mgr-switch

  6. 单击免密登录

    连接成功后,Linux实例默认以ecs-assist-user用户登录实例,Windows实例默认以system用户登录。以Linux实例为例,效果如下图所示。session-mgr-logon

权限策略示例

创建权限策略和为RAM用户授权的操作,请参见创建自定义权限策略为RAM用户授权。使用会话管理连接实例时,权限说明如下:

  • RAM用户必须拥有调用StartTerminalSession的权限,才能通过会话管理连接实例。以下为权限策略内容示例:

    • 允许连接所有实例

      {
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecs:StartTerminalSession"
                  ],
                  "Resource": [
                      "acs:ecs:*:*:instance/*"
                  ]
              }
          ],
          "Version": "1"
      }
    • 允许连接指定的实例

      重要

      请将<i-****>替换为指定实例的ID。

      {
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecs:StartTerminalSession"
                  ],
                  "Resource": [
                      "acs:ecs:*:*:instance/i-bp11igy9rss1hu8y****",
                      "acs:ecs:*:*:instance/i-bp1fihgzdytqve94****"
                  ]
              }
          ],
          "Version": "1"
      }
    • 允许连接绑定了指定标签的实例

      重要

      请将key-****替换为指定的标签键,value-****替换为指定的标签值。

      {
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecs:StartTerminalSession"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "StringEquals": {
                          "ecs:tag/key-****": "value-****"
                      }
                  }
              }
          ],
          "Version": "1"
      }
    • 允许通过指定的IP连接实例

      重要

      请将192.168.XX.XX192.168.XX.XX/24替换为指定的IP或CIDR地址段。

      {
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "ecs:StartTerminalSession"
                  ],
                  "Resource": "*",
                  "Condition": {
                      "IpAddress": {
                          "acs:SourceIp": [
                              "192.168.XX.XX",
                              "192.168.XX.XX/24"
                          ]
                      }
                  }
              }
          ],
          "Version": "1"
      }
  • 您只需要在打开会话管理开关前,为RAM用户添加查看会话管理配置的DescribeUserBusinessBehavior权限和打开或关闭会话管理的ModifyUserBusinessBehavior权限。打开开关后,您可以根据实际需要取消授权。以下为权限策略内容示例:

    {
        "Version": "1",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "ecs:ModifyUserBusinessBehavior",
                    "ecs:DescribeUserBusinessBehavior"
                ],
                "Resource": "acs:ecs:*:*:instance/*"
            }
        ]
    }

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

在开源项目cloud-assistant-starter中,包含了使用会话管理功能,远程连接到云服务器或托管实例的完整代码。项目中的AxtSession.tsx包含了连接与使用StartTerminalSession所返回的WebSocketURL的完整代码,将这段代码移植到您自己的企业应用中,即可实现免密码、免公网远程登录功能的会话管理。

相关文档

会话管理支持多种方式连接实例,您可以根据业务需要,选择合适的连接方式。