AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWSSupport-TroubleshootSSH

描述

AWSSupport-TroubleshootSSH Automation 文档安装适用于 Linux 的 Amazon EC2Rescue 工具,然后使用 EC2Rescue 工具检查或尝试修复阻止通过 SSH 远程连接到 Linux 计算机的常见问题。(可选)如果用户明确允许进行离线修复,则可以通过停止和启动实例来离线应用更改。默认情况下,文档以只读模式运行。

文档类型

Automation

所有者

Amazon

平台

Linux

参数

  • 实例 ID

    类型:字符串

    说明:(必需)您的 EC2 Linux 实例的 ID。

  • Action

    类型:字符串

    允许的值:CheckAll、FixAll

    默认值:CheckAll

    说明:(必需)指定只检查而不修复问题还是检查并自动修复任何发现的问题。

  • AllowOffline

    类型:字符串

    允许的值:True、False

    默认值:False

    说明:(可选)仅修复 - 如果当在线故障排除失败或提供的实例不是托管实例时允许进行离线 SSH 修复,请将其设置为 true。注意:对于离线修复,SSM Automation 会停止实例,并在尝试任何操作前创建一个 AMI。

  • SubnetId

    类型:字符串

    默认值:SelectedInstanceSubnet

    说明:(可选)仅离线 - 用于执行离线故障排除的 EC2Rescue 实例的子网 ID。如果未指定子网 ID,AWS Systems Manager Automation 将创建一个新 VPC。

    重要

    子网必须与 InstanceId 位于同一可用区中,并且必须允许访问 SSM 终端节点。

  • S3BucketName

    类型:字符串

    说明:(可选)仅离线 - 您账户中用于上传故障排除日志的 S3 存储桶的名称。请确保存储桶策略不会向不需要访问收集的日志的各方授予不必要的读/写权限。

  • AutomationAssumeRole

    类型:字符串

    说明:(可选)此执行的 IAM 角色。如果未指定任何角色,则 AWS Systems Manager Automation 将使用运行此文档的用户的权限。

示例

检查当前 SSH 状态

aws ssm start-automation-execution --document-name AWSSupport-TroubleshootSSH --parameters "InstanceId=INSTANCEID"

对所有检测到的 SSH 问题执行在线修复

aws ssm start-automation-execution --document-name AWSSupport-TroubleshootSSH --parameters "InstanceId=INSTANCEID,Action=FixAll"

对所有检测到的 SSH 问题执行离线修复

aws ssm start-automation-execution --document-name AWSSupport-TroubleshootSSH --parameters "InstanceId=INSTANCEID,Action=FixAll,AllowOffline=True"

检索执行输出

aws ssm get-automation-execution --automation-execution-id EXECUTIONID --output text --query 'AutomationExecution.Output'

所需的 IAM 权限

建议让接收命令的 EC2 实例具有附加了 AmazonEC2RoleforSSM Amazon 托管策略的 IAM 角色。对于在线修复,用户必须至少具有 ssm:DescribeInstanceInformationssm:ExecuteAutomationssm:SendCommand 才能运行此 Automation 并将命令发送到实例,并且需要具有 ssm:GetAutomationExecution 才能读取 Automation 输出。对于离线修复,用户必须至少具有 ssm:DescribeInstanceInformationssm:ExecuteAutomationec2:DescribeInstances 以及 ssm:GetAutomationExecution 才能读取 Automation 输出。AWSSupport-TroubleshootSSH 调用 AWSSupport-ExecuteEC2Rescue 来执行离线修复 - 请查看 AWSSupport-ExecuteEC2Rescue 的权限,确保您可以成功运行 Automation。

文档步骤

  1. aws:assertAwsResourceProperty - 检查实例是不是托管实例

    1. (在线修复)如果实例为托管实例,则:

      1. aws:configurePackage - 通过 AWS-ConfigureAWSPackage 安装 EC2Rescue for Linux。

      2. aws:runCommand – 运行 bash 脚本来运行 EC2Rescue for Linux。

    2. (离线修复)如果实例并非托管实例,则:

      1. aws:assertAwsResourceProperty - 断言 AllowOffline = True

      2. aws:assertAwsResourceProperty - 断言 Action = FixAll

      3. aws:assertAwsResourceProperty - 断言 SubnetId 的值

      4. (使用提供的实例的子网)如果 SubnetId 为 SelectedInstanceSubnet,则使用 aws:executeAutomation 通过提供的实例的子网运行 AWSSupport-ExecuteEC2Rescue。

      5. (使用提供的自定义子网)如果 SubnetId 不为 SelectedInstanceSubnet,则使用 aws:executeAutomation 通过提供的 SubnetId 值运行 AWSSupport-ExecuteEC2Rescue。

输出

troubleshootSSH.Output

troubleshootSSHOffline.Output

troubleshootSSHOfflineWithSubnetId.Output