我在尝试使用 SSH 连接我的 EC2 实例时收到错误。如何使用 AWSSupport-TroubleshootSSH 自动化工作流程解决 SSH 连接问题?

2 分钟阅读
0

当我通过 SSH 登录 Amazon Elastic Compute Cloud(Amazon EC2)实例并启用详细消息时,收到错误,例如“权限被拒绝”或“连接被拒绝”。 如何使用 AWSSupport-TroubleshootSSH 自动化文档解决 SSH 连接问题?

简短描述

AWSSupport-TroubleshootSSH 会安装 Amazon EC2Rescue 工具。然后,它会检查并更正一些通过 SSH 连接到 Linux 计算机时导致远程连接错误的问题。运行 AWSSupport-TroubleshootSSH 自动化可按子网、S3 桶或 IAM 角色自动修复问题。

使用 EC2Rescue for Linux 的系统要求

EC2Rescue for Linux 需要满足以下先决条件的 Amazon EC2 Linux 实例:

支持的操作系统

  • Amazon Linux 2
  • Amazon Linux 2016.09+
  • SLES 12+
  • RHEL 7+
  • Ubuntu 16.04+

软件要求

  • Python 2.7.9+ 或 3.2+

**注意:**要了解有关详细消息收发或解决其他类型的错误消息的更多信息,请参阅为什么我无法使用 SSH 连接到 Amazon EC2 Linux 实例?

解决方法

开始之前:

  • 复制要对其进行故障排除的 Amazon EC2 实例的实例 ID。您需要实例 ID 才能运行自动化文档。
  • **(可选)**复制与无法访问的 Amazon EC2 实例位于同一可用区的子网的 ID。EC2Rescue 实例将安装在此子网中。如果未指定子网,则自动化文档会在您的 AWS 账户中创建一个新的临时 VPC。确认您的 AWS 账户至少有一个可用的 VPC。默认情况下,可以在一个区域中创建五个 VPC。如果已经在区域中创建了五个 VPC,则在不更改 Amazon EC2 实例的情况下,自动化将失败。有关详细信息,请参阅 VPC 和子网
  • **(可选)**为自动化创建和指定 AWS Identity and Access Management(IAM)角色。如果未指定此角色,则 AWS Systems Manager Automation 将使用执行此文档的用户的权限。有关为自动化创建角色的详细信息,请参阅使用 IAM 为自动化配置角色

从 AWS Systems Manager 控制台运行 AWSSupport-TroubleshootSSH 自动化

  1. 打开 AWS Systems Manager 控制台
  2. 在导航窗格中,选择自动化
    注意:如果 AWS Systems Manager 主页先打开,请选择菜单图标,打开导航窗格,然后选择自动化
  3. 选择执行自动化
  4. 在搜索字段中输入 AWSSupport-TroubleshootSSH,然后按 Enter
  5. 在搜索结果中选择 AWSSupport-TroubleshootSSH
  6. 在文档列表中,选择 AWSSupport-TroubleshootSSH。文档所有者是 Amazon。
  7. 描述部分中,验证文档版本是否设置为运行时的默认版本
  8. 选择下一步
  9. 执行自动化文档部分中,选择简单执行
  10. 输入参数部分中,输入以下参数:
    对于 InstanceID,指定无法访问的实例的 ID。对于 Action,选择 FixAll
    对于 AllowOffline,选择 True
    **注意:**如果将此参数设置为 False 且实例不由 Systems Manager 管理,则自动化将失败。
    **(可选)**对于 SubnetId,在与指定的 Amazon EC2 实例位于同一可用区的现有 VPC 中指定一个子网。默认情况下,Systems Manager 会创建一个新的 VPC,但可以在现有 VPC 中指定子网。
    **(可选)**对于 S3BucketName,输入您有写入权限的桶的名称。故障排除日志将上传到此桶(如果提供)。
    **(可选)**对于 AutomationAssumeRole,指定此执行的 IAM 角色。如果未指定任何角色,则 AWS Systems Manager Automation 将使用执行此文档的用户的权限。
  11. 选择执行
  12. 要监控执行进度,请选择正在运行的自动化,然后选择步骤选项卡。执行完成后,选择描述选项卡,然后选择查看输出以查看结果。要查看各个步骤的输出,请选择步骤选项卡,然后选择步骤旁边的查看输出

从 AWS 命令行界面(AWS CLI)运行 AWSSupport-TroubleshootSSH 自动化

aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootSSH" --document-version "\$DEFAULT" --parameters '{"InstanceId":["i-0a241ed9caf16f01e"],"Action":["FixAll"],"AllowOffline":["True"],"SubnetId":["SelectedInstanceSubnet"]}' --region us-east-1

有关 AWSSupport-TroubleshootSSH 自动化的详细信息,请参阅使用 AWS Systems Manager Automation API 操作进行智能 RDP 和 SSH 修复