为什么我无法使用 SSH 连接到我的 Amazon EC2 Linux 实例?

上次更新日期:2022 年 6 月 15 日

我无法连接到我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例。如何排查并解决此问题?

简短描述

要解决此问题,请通过 SSH 登录到 EC2 实例并开启详细消息收发功能。使用 SSH 客户端的输出消息来确定问题的类型。然后,请按照本文中的问题排查步骤来解决这些问题。

解决方法

登录到您的实例以确定问题

1.    通过 SSH 登录到 EC2 实例并开启详细消息收发功能:

user@localhost:~$ ssh -v -i my_key.pem ec2-user@11.22.33.44

在本示例中,私有密钥文件为 my_key.pem,用户名为 ec2-user@11.22.33.44。请用您的密钥文件和您的用户名替换示例中的密钥文件和用户名。有关更多信息,请参阅使用 SSH 连接到 Linux 实例

2.    使用 SSH 客户端的输出消息来确定您遇到的问题的类型。

使用适用于 Linux 的 EC2 Serial Console 排查基于 Nitro 的实例类型问题

如果您已为 Linux 启用 EC2 Serial Console,可以使用它来排查受支持的基于 Nitro 的实例类型的问题。您可以使用串行控制台或 AWS 命令行界面 (AWS CLI) 访问串行控制台。使用 EC2 Serial Console 时,您不需要有效的连接即可连接到您的实例。

在使用串行控制台进行故障排除之前,请先执行以下操作:

  • 在账户级别授予对串行控制台的访问权限
  • 创建 AWS Identity and Access Management(IAM)策略,授予对 IAM 用户的访问权限
  • 检查您的实例是否至少包含一个基于密码的用户
  • 如果使用 AWS CLI 连接到 EC2 实例 Connect,请确保您使用的是最新版本的 AWS CLI

常见错误排查

错误:“Connection timed out(连接超时)”或“Connection refused(连接被拒)”:要解决此错误,请参阅在尝试使用 SSH 连接到我的 EC2 实例时,我收到“Connection refused”(连接被拒)或“Connection timed out”(连接超时)错误。如何解决此问题?

虚拟私有云 (VPC) 上的“connection timed out(连接超时)”错误:要解决此错误,请参阅如何排查来自互联网的 Amazon EC2 实例连接超时错误?

错误:“Permission denied(权限被拒绝)”或“Authentication failed(身份验证失败)”:要解决此问题,请参阅当我尝试访问我的 EC2 实例时,我收到了“Permission denied (publickey)(权限被拒绝(公有密钥))”或“Authentication failed, permission denied(身份验证失败,权限被拒绝)”错误。如何解决此问题?

错误:“Server refused our key(服务器拒绝了我们的密钥)”:要解决此错误,请参阅我在尝试使用 SSH 连接到 EC2 实例时为什么会收到“Server refused our key(服务器拒绝了我们的密钥)”错误?

错误:“imported-openssh-key”或“Putty Fatal Error”:要解决此错误,请参阅连接 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例时,为什么我会收到“imported-openssh-key”或“Putty Fatal Error”错误?

错误:“输入‘my_key.pem’的密码”:

如果您已为密钥文件创建了密码,但尚未手动输入密码,则会出现此错误。要解决此错误,请输入密码或使用 ssh-agent 自动加载密钥。

自动排查 SSH 错误

您可能会因为多种原因收到 SSH 错误,比如资源暂时不可用运行 AWSSupport-TroubleshootSSH 自动化文档来自动查找和解决此类错误。