启动会话 - AWS Systems Manager

启动会话

您可以使用 AWS Systems Manager 控制台、Amazon Elastic Compute Cloud (Amazon EC2) 控制台、AWS Command Line Interface (AWS CLI) 或 SSH 启动会话。

启动会话(Systems Manager 控制台)

您可以使用 AWS Systems Manager 控制台启动与账户中的托管式节点进行的会话。

注意

在启动会话之前,确保您已经完成 Session Manager 的设置步骤。有关信息,请参阅设置 Session Manager

启动会话(Systems Manager 控制台)
  1. 访问 https://console.aws.amazon.com/systems-manager/,打开 AWS Systems Manager 控制台。

  2. 在导航窗格中,选择 Session Manager

  3. 选择 Start session (启动会话)

  4. (可选)在会话原因字段中输入会话描述。

  5. 对于目标实例,选择要连接的托管式节点左侧的选项按钮。

    如果您需要节点不在列表中,或者如果您选择了节点并收到配置错误,请参阅 托管式节点不可用或未为 Session Manager 配置托管式节点,以了解故障排除步骤。

  6. 选择启动会话立即启动会话。

    –或者–

    选择下一步查看会话选项。

  7. (可选)对于会话文档,选择要在会话启动时运行的文档。如果您的文档支持运行时参数,则可以在每个参数字段中输入一个或多个逗号分隔的值。

  8. 选择下一步

  9. 选择 Start session (启动会话)

建立连接后,您可以像运行任何其他连接类型一样运行 Bash 命令(Linux 和 macOS)或 PowerShell 命令(Windows)。

重要

如果要允许用户在会话管理器控制台中启动会话时指定文档,请注意以下几点:

开启会话(Amazon EC2 控制台)

您可以使用 Amazon Elastic Compute Cloud (Amazon EC2) 控制台来启动与账户中的实例的会话。

注意

如果您收到一个错误,提示您无权执行一项或多项 Systems Manager 操作 (ssm:command-name),则必须联系您的管理员寻求帮助。管理员是向您提供登录凭证的人。让其帮助您更新您的策略,以允许您从 Amazon EC2 控制台启动会话。如果您是管理员,请参阅 Session Manager 的 IAM policy 示例 了解更多信息。

要启动会话(Amazon EC2 控制台),请执行以下步骤:
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择实例,然后选择连接

  4. 对于 Connection method (连接方法),选择 Session Manager

  5. 选择连接

建立连接后,您可以像运行任何其他连接类型一样运行 Bash 命令(Linux 和 macOS)或 PowerShell 命令(Windows)。

启动会话 (AWS CLI)

安装并配置 AWS Command Line Interface(AWS CLI)(如果尚未执行该操作)。

有关信息,请参阅安装或更新 AWS CLI 的最新版本

在启动会话之前,确保您已经完成 Session Manager 的设置步骤。有关信息,请参阅设置 Session Manager

要使用 AWS CLI 运行会话命令,还必须在本地计算机上安装 Session Manager 插件。有关信息,请参阅为 AWS CLI 安装 Session Manager 插件

要使用 AWS CLI 开启会话,请运行以下命令,将 instance-id 替换为您自己的信息。

aws ssm start-session \ --target instance-id

有关可以与 start-session 命令结合使用的其他选项的信息,请参阅《AWS CLI Command Reference》中 AWS Systems Manager 部分中的 start-session

启动会话 (SSH)

要启动 Session Manager SSH 会话,托管式节点上必须安装 2.3.672.0 版本或更高版本的 SSM Agent。

SSH 连接要求

对于使用 SSH 的会话连接,请注意以下要求和限制:

  • 必须将目标托管式节点配置为支持 SSH 连接。有关更多信息,请参阅(可选)通过 Session Manager 允许和控制 SSH 连接的权限

  • 您必须使用与 Privacy Enhanced Mail (PEM) 证书关联的托管式节点账户进行连接,而不是用于其他类型的会话连接的 ssm-user 账户。例如,在适用于 Linux 和 macOS 的 EC2 实例上,默认用户为 ec2-user。有关确定每种实例类型的默认用户的信息,请参阅《Amazon EC2 用户指南》中的获取有关您的实例的信息

  • 日志记录不可用于通过端口转发或 SSH 连接的 Session Manager 会话。这是因为 SSH 会加密所有会话数据,而 Session Manager 仅充当 SSH 连接的隧道。

注意

在启动会话之前,确保您已经完成 Session Manager 的设置步骤。有关信息,请参阅设置 Session Manager

要使用 SSH 启动会话,请运行以下命令。将每个示例资源占位符替换为您自己的信息。

ssh -i /path/my-key-pair.pem username@instance-id
提示

当您使用 SSH 启动会话时,您可以使用以下命令格式将本地文件复制到目标托管式节点。

scp -i /path/my-key-pair.pem /path/ExampleFile.txt username@instance-id:~

有关可以与 start-session 命令结合使用的其他选项的信息,请参阅《AWS CLI Command Reference》中 AWS Systems Manager 部分中的 start-session

启动会话(端口转发)

要启动 Session Manager 端口转发会话,必须在托管式节点上安装 2.3.672.0 版本或更高版本的 SSM Agent。

注意

在启动会话之前,确保您已经完成 Session Manager 的设置步骤。有关信息,请参阅设置 Session Manager

要使用 AWS CLI 运行会话命令,必须在本地计算机上安装 Session Manager 插件。有关信息,请参阅为 AWS CLI 安装 Session Manager 插件

根据您的操作系统和命令行工具,放置引号的位置可能会有所不同,并可能需要转义字符。

要启动端口转发会话,请从 CLI 中运行以下命令。将每个示例资源占位符替换为您自己的信息。

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name AWS-StartPortForwardingSession \ --parameters '{"portNumber":["80"], "localPortNumber":["56789"]}'
Windows
aws ssm start-session ^ --target instance-id ^ --document-name AWS-StartPortForwardingSession ^ --parameters portNumber="3389",localPortNumber="56789"

portNumber 是托管式节点上您希望将会话流量重定向到的远程端口。例如,您可以指定端口 3389,用于使用远程桌面协议(RDP)连接到 Windows 节点。如果您未指定 portNumber 参数,Session Manager 会将 80 用作默认值。

localPortNumber 是本地计算机上流量启动的端口,例如 56789。此值是您在使用客户端连接到托管式节点时输入的值。例如,localhost:56789

有关可以与 start-session 命令结合使用的其他选项的信息,请参阅《AWS CLI Command Reference》中 AWS Systems Manager 部分中的 start-session

有关端口转发会话的更多信息,请参阅 AWS 新闻博客中的 Port Forwarding Using AWS Systems ManagerSession Manager

启动会话(至远程主机的端口转发)

要启动至远程主机的 Session Manager 端口转发会话,必须在托管式节点上安装 3.1.1374.0 版本或更高版本的 SSM Agent。远程主机不需要由 Systems Manager 进行管理。

注意

在启动会话之前,确保您已经完成 Session Manager 的设置步骤。有关信息,请参阅设置 Session Manager

要使用 AWS CLI 运行会话命令,必须在本地计算机上安装 Session Manager 插件。有关信息,请参阅为 AWS CLI 安装 Session Manager 插件

根据您的操作系统和命令行工具,放置引号的位置可能会有所不同,并可能需要转义字符。

要启动端口转发会话,请从 AWS CLI 中运行以下命令。将每个示例资源占位符替换为您自己的信息。

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name AWS-StartPortForwardingSessionToRemoteHost \ --parameters '{"host":["mydb.example.us-east-2.rds.amazonaws.com"],"portNumber":["3306"], "localPortNumber":["3306"]}'
Windows
aws ssm start-session ^ --target instance-id ^ --document-name AWS-StartPortForwardingSessionToRemoteHost ^ --parameters host="mydb.example.us-east-2.rds.amazonaws.com",portNumber="3306",localPortNumber="3306"

host 值表示要连接到的远程主机的主机名或 IP 地址。托管式节点和远程主机之间的常规连接和名称解析要求仍然适用。

portNumber 是托管式节点上您希望将会话流量重定向到的远程端口。例如,您可以指定端口 3389,用于使用远程桌面协议(RDP)连接到 Windows 节点。如果您未指定 portNumber 参数,Session Manager 会将 80 用作默认值。

localPortNumber 是本地计算机上流量启动的端口,例如 56789。此值是您在使用客户端连接到托管式节点时输入的值。例如,localhost:56789

有关可以与 start-session 命令结合使用的其他选项的信息,请参阅《AWS CLI Command Reference》中 AWS Systems Manager 部分中的 start-session

通过 Amazon ECS 任务启动会话

Session Manager 支持通过 Amazon Elastic Container Service(Amazon ECS)集群中的任务启动端口转发会话。为此,必须更新 IAM 中的任务角色来包含以下权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" } ] }

要通过 Amazon ECS 任务启动端口转发会话,请从 AWS CLI 中运行以下命令。将每个示例资源占位符替换为您自己的信息。

注意

target 参数中移除 < 和 > 符号。这些符号仅供读者澄清之用。

Linux & macOS
aws ssm start-session \ --target ecs:<ECS_cluster_name>_<ECS_container_ID>_<container_runtime_ID> \ --document-name AWS-StartPortForwardingSessionToRemoteHost \ --parameters '{"host":["URL"],"portNumber":["port_number"], "localPortNumber":["port_number"]}'
Windows
aws ssm start-session ^ --target ecs:<ECS_cluster_name>_<ECS_container_ID>_<container_runtime_ID> ^ --document-name AWS-StartPortForwardingSessionToRemoteHost ^ --parameters host="URL",portNumber="port_number",localPortNumber="port_number"

启动会话(交互式和非交互式命令)

在启动会话之前,确保您已经完成 Session Manager 的设置步骤。有关信息,请参阅设置 Session Manager

要使用 AWS CLI 运行会话命令,还必须在本地计算机上安装 Session Manager 插件。有关信息,请参阅为 AWS CLI 安装 Session Manager 插件

要启动交互式命令会话,请运行以下命令:将每个示例资源占位符替换为您自己的信息。

Linux & macOS
aws ssm start-session \ --target instance-id \ --document-name CustomCommandSessionDocument \ --parameters '{"logpath":["/var/log/amazon/ssm/amazon-ssm-agent.log"]}'
Windows
aws ssm start-session ^ --target instance-id ^ --document-name CustomCommandSessionDocument ^ --parameters logpath="/var/log/amazon/ssm/amazon-ssm-agent.log"

有关可以与 start-session 命令结合使用的其他选项的信息,请参阅《AWS CLI Command Reference》中 AWS Systems Manager 部分中的 start-session