我在尝试使用 SSH 连接我的 EC2 实例时收到错误消息。如何通过 AWSSupport-TroubleshootSSH Automation 工作流程排查 SSH 连接问题?

上次更新时间:2020 年 3 月 19 日

当使用 SSH 登录到我的 Amazon Elastic Compute Cloud (Amazon EC2) 时,我收到详细的错误消息,例如,"Permission denied" 或 "Connection refused"。如何通过 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 服务角色运行 Automation 工作流程

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

  1. 打开 AWS Systems Manager 控制台
  2. 在导航窗格中,选择自动化
    注意:如果 AWS Systems Manager 主页先打开,选择菜单图标以打开导航窗格,然后选择自动化
  3. 选择执行自动化
  4. 在搜索字段中输入 AWSSupport-TroubleshootSSH,然后按回车键
  5. 选择搜索结果中的 AWSSupport-TroubleshootSSH
  6. 在文档列表中,选择 AWSSupport-TroubleshootSSH。该文档的拥有者是 Amazon。
  7. 描述部分中,验证文档版本是否被设置为运行时默认版本
  8. 选择下一步
  9. 执行自动化文档部分,选择简单执行
  10. 输入参数部分中,指定以下参数:
    对于 InstanceID,指定无法访问的实例的 ID。在操作中,选择 FixAll
    对于 AllowOffline,选择 True
    (可选) 对于 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 Automation 的更多信息,见采用 AWS Systems Manager Automation API 操作的 Smart RDP 和 SSH 修复


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?