步骤 8:(可选)通过 Session Manager 允许和控制 SSH 连接的权限 - AWS Systems Manager

步骤 8:(可选)通过 Session Manager 允许和控制 SSH 连接的权限

您可以允许 AWS 账户 中的用户使用 AWS Systems Manager Session Manager 通过 AWS Command Line Interface (AWS CLI) 建立与托管式节点的 Secure Shell (SSH) 连接。使用 SSH 连接的用户还可以使用安全复制协议 (SCP) 在本地计算机和托管式节点之间复制文件。您可以使用此功能连接到托管式节点,而无需打开入站端口或维护堡垒主机。

允许 SSH 连接后,您可以使用 AWS Identity and Access Management (IAM) 策略显式允许或拒绝用户、组或角色使用 Session Manager 进行 SSH 连接。

注意

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

允许 Session Manager 的 SSH 连接

使用以下步骤在托管式节点上通过 Session Manager 允许 SSH 连接。

允许 Session Manager 的 SSH 连接
  1. 在要允许 SSH 连接的托管式节点上,执行以下操作:

  2. 在要使用 SSH 连接到托管式节点的本地计算机上,执行以下操作:

    • 确保安装了 Session Manager 插件的版本 1.1.23.0 或更高版本。

      有关安装 Session Manager 的信息,请参阅 为 AWS CLI 安装 Session Manager 插件

    • 更新 SSH 配置文件以允许运行代理命令,此命令启动 Session Manager 会话并通过连接传输所有数据。

      Linux 和 macOS

      提示

      SSH 配置文件通常位于 ~/.ssh/config

      将以下内容添加到本地计算机上的配置文件中。

      # SSH over Session Manager host i-* mi-* ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"

      Windows

      提示

      SSH 配置文件通常位于 C:\Users\<username>\.ssh\config

      将以下内容添加到本地计算机上的配置文件中。

      # SSH over Session Manager host i-* mi-* ProxyCommand C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p"
    • 创建或确认您具有在建立与托管式节点的连接时使用的 Privacy Enhanced Mail 证书(PEM 文件),或者至少具有公有密钥。此密钥必须是已与托管式节点关联的密钥。必须设置私有密钥文件的权限,以确保只有您可以读取该文件。您可以使用以下命令设置您的私有密钥文件的权限,以确保只有您可以读取该文件。

      chmod 400 <my-key-pair>.pem

      例如,对于 Amazon Elastic Compute Cloud (Amazon EC2) 实例,这是您在创建实例时创建或选择的密钥对文件。(您可以在启动会话的命令中指定证书或密钥的路径。有关使用 SSH 启动会话的信息,请参阅 启动会话 (SSH)。)

通过 Session Manager 控制 SSH 连接的用户权限

在托管式节点上通过 Session Manager 启用 SSH 连接后,您可以使用 IAM policy 允许或拒绝用户、组或角色通过 Session Manager 进行 SSH 连接。

要使用 IAM policy 允许通过 Session Manager 进行 SSH 连接,请执行以下步骤:
  • 使用以下选项之一:

    • 选项 1:通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

      在导航窗格中,选择 Policies (策略),然后更新您想要允许通过 Session Manager 启动 SSH 连接的用户或角色的权限策略。

      例如,将以下元素添加到您在Session Manager 的快速入门最终用户策略中创建的快速入门策略中。将每个示例资源占位符替换为您自己的信息。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:StartSession", "Resource": [ "arn:aws:ec2:region:account-id:instance/instance-id", "arn:aws:ssm:*:*:document/AWS-StartSSHSession" ] } ] }
    • 选项 2:使用 AWS Management Console、AWS CLI 或 AWS API 将一个内联策略附加到用户策略。

      通过使用所选的方法,将选项 1 中的策略语句附加到 AWS 用户、组或角色的策略中。

      有关信息,请参阅 IAM 用户指南中的添加和删除 IAM 身份权限

要使用 IAM policy 拒绝通过 Session Manager 进行 SSH 连接,请执行以下步骤:
  • 使用以下选项之一:

    • 选项 1:通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/。在导航窗格中,选择 Policies (策略),然后更新用户或角色的权限策略以阻止启动 Session Manager 会话。

      例如,将以下元素添加到您在Session Manager 的快速入门最终用户策略中创建的快速入门策略中。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor1", "Effect": "Deny", "Action": "ssm:StartSession", "Resource": "arn:aws:ssm:*:*:document/AWS-StartSSHSession" } ] }
    • 选项 2:使用 AWS Management Console、AWS CLI 或 AWS API 将一个内联策略附加到用户策略。

      通过使用所选的方法,将选项 1 中的策略语句附加到 AWS 用户、组或角色的策略中。

      有关信息,请参阅 IAM 用户指南中的添加和删除 IAM 身份权限