

• AWS Systems Manager CloudWatch 控制面板在 2026 年 4 月 30 日之后将不再可用。客户可以像现在一样继续使用 Amazon CloudWatch 控制台来查看、创建和管理其 Amazon CloudWatch 控制面板。有关更多信息，请参阅 [Amazon CloudWatch 控制面板文档](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

# 步骤 8：（可选）通过 Session Manager 允许和控制 SSH 连接的权限
<a name="session-manager-getting-started-enable-ssh-connections"></a>

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

 当您通过 Session Manager 建立 SSH 连接时，AWS CLI 和 SSM Agent 会通过 TLS 创建到 Session Manager 端点的安全 WebSocket 连接。SSH 会话在此加密隧道内运行，无需在托管节点上开放入站端口，即可提供额外安全保护。

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

**注意**  
日志记录不可用于通过端口转发或 SSH 连接的 Session Manager 会话。这是因为 SSH 会对 AWS CLI 和 Session Manager 端点之间建立的安全 TLS 连接中的所有会话数据进行加密，而 Session Manager 仅用作 SSH 连接的隧道。

**Topics**
+ [允许 Session Manager 的 SSH 连接](#ssh-connections-enable)
+ [通过 Session Manager 控制 SSH 连接的用户权限](#ssh-connections-permissions)

## 允许 Session Manager 的 SSH 连接
<a name="ssh-connections-enable"></a>

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

**允许 Session Manager 的 SSH 连接**

1. 在要允许 SSH 连接的托管式节点上，执行以下操作：
   + 确保 SSH 正在托管式节点上运行。（您可以关闭节点上的入站端口。）
   + 确保托管式节点上安装了 SSM Agent 版本 2.3.672.0 或更高版本。

     有关在托管式节点上安装或更新 SSM Agent 的更多信息，请参阅以下主题：
     + [在适用于 Windows Server 的 EC2 实例上手动安装和卸载 SSM Agent](manually-install-ssm-agent-windows.md).
     +  [在适用于 Linux 的 EC2 实例上手动安装和卸载 SSM Agent](manually-install-ssm-agent-linux.md) 
     +  [在适用于 macOS 的 EC2 实例上手动安装和卸载 SSM Agent](manually-install-ssm-agent-macos.md) 
     +  [如何在混合 Windows 节点上安装 SSM Agent](hybrid-multicloud-ssm-agent-install-windows.md) 
     +  [如何在混合 Linux 节点上安装 SSM Agent](hybrid-multicloud-ssm-agent-install-linux.md) 
**注意**  
要将 Session Manager 与作为托管式节点激活的本地服务器、边缘设备和虚拟机 (VM) 一起使用，必须使用高级实例套餐。有关高级实例的更多信息，请参阅 [配置实例套餐](fleet-manager-configure-instance-tiers.md)。

1. 在要使用 SSH 连接到托管式节点的本地计算机上，执行以下操作：
   + 确保安装了 Session Manager 插件的版本 1.1.23.0 或更高版本。

     有关安装 Session Manager 的信息，请参阅 [为 AWS CLI 安装 Session Manager 插件](session-manager-working-with-install-plugin.md)。
   + 更新 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'"
         User ec2-user
     ```

      ** 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-working-with-sessions-start.md#sessions-start-ssh)。）

## 通过 Session Manager 控制 SSH 连接的用户权限
<a name="ssh-connections-permissions"></a>

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

**要使用 IAM policy 允许通过 Session Manager 进行 SSH 连接，请执行以下步骤：**
+ 使用以下选项之一：
  + **选项 1**：通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

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

    例如，将以下元素添加到您在[Session Manager 的快速入门最终用户策略](getting-started-restrict-access-quickstart.md#restrict-access-quickstart-end-user)中创建的快速入门策略中。将每个{{示例资源占位符}}替换为您自己的信息。

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "ssm:StartSession",
                "Resource": [
                    "arn:aws:ec2:{{us-east-1}}:{{111122223333}}:instance/{{instance-id}}",
                    "arn:aws:ssm:*:*:document/AWS-StartSSHSession"
                ]
            },
            {
                "Effect": "Allow",
                "Action": "ssmmessages:OpenDataChannel",
                "Resource": "arn:aws:ssm:*:*:session/${aws:userid}-*"
            }
        ]
    }
    ```

------
  + **选项 2**：使用 AWS 管理控制台、AWS CLI 或 AWS API 将一个内联策略附加到用户策略。

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

    有关信息，请参阅 *IAM 用户指南*中的[添加和删除 IAM 身份权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。

**要使用 IAM policy 拒绝通过 Session Manager 进行 SSH 连接，请执行以下步骤：**
+ 使用以下选项之一：
  + **选项 1**：通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。在导航窗格中，选择 **Policies (策略)**，然后更新用户或角色的权限策略以阻止启动 Session Manager 会话。

    例如，将以下元素添加到您在[Session Manager 的快速入门最终用户策略](getting-started-restrict-access-quickstart.md#restrict-access-quickstart-end-user)中创建的快速入门策略中。

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Effect": "Deny",
                "Action": "ssm:StartSession",
                "Resource": "arn:aws:ssm:*:*:document/AWS-StartSSHSession"
            },
            {
                "Effect": "Allow",
                "Action": "ssmmessages:OpenDataChannel",
                "Resource": "arn:aws:ssm:*:*:session/${aws:userid}-*"
            }
        ]
    }
    ```

------
  + **选项 2**：使用 AWS 管理控制台、AWS CLI 或 AWS API 将一个内联策略附加到用户策略。

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

    有关信息，请参阅 *IAM 用户指南*中的[添加和删除 IAM 身份权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)。