使用 EC2 Instance Connect 端点连接到 Linux 实例 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 EC2 Instance Connect 端点连接到 Linux 实例

您可以使用 EC2 Instance Connect 端点连接到支持 SSHLinux 实例。

有关如何连接到 Windows 实例的信息,请参阅《适用于 Windows 实例的 Amazon EC2 用户指南》中的 使用 EC2 Instance Connect 端点连接到 Windows 实例

先决条件

  • 您必须拥有连接到 EC2 Instance Connect Endpoint 所需的 IAM 权限。有关更多信息,请参阅 使用 EC2 Instance Connect 端点连接到实例的权限

  • EC2 Instance Connect Endpoint 必须处于可用(控制台)或 create-complete (Amazon CLI) 状态。如果没有用于您的 VPC 的 EC2 Instance Connect 端点,则可以创建一个。有关更多信息,请参阅 创建 EC2 Instance Connect Endpoint

  • 要使用 EC2 控制台连接到您的实例,或者要使用 CLI 进行连接并让 EC2 Instance Connect 处理临时密钥,您的实例必须安装 EC2 Instance Connect。有关更多信息,请参阅 安装 EC2 Instance Connect

  • 确保实例安全组允许来自 EC2 Instance Connect 端点的入站 SSH 流量。有关更多信息,请参阅 目标实例安全组规则

使用 Amazon EC2 控制台连接到您的 Linux 实例

您可以使用 Amazon EC2 控制台连接到实例,如下所示。

使用基于浏览器的客户端连接到实例
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择该实例,然后选择连接

  4. 选择 EC2 Instance Connect 选项卡。

  5. 对于连接类型,选择使用 EC2 Instance Connect Endpoint 进行连接

  6. 对于 EC2 Instance Connect 端点,选择该 EC2 Instance Connect 端点的 ID。

  7. 对于用户名,如果您用于启动实例的 AMI 使用的用户名不是 ec2-user,请输入正确的用户名。

  8. 对于最大隧道持续时间(秒),输入 SSH 连接允许的最大持续时间。

    该持续时间必须符合 IAM 策略中指定的任何 maxTunnelDuration 条件。如果您无权访问该 IAM 策略,请联系您的管理员。

  9. 选择连接。这将为您的实例打开一个终端窗口。

使用 SSH 连接到 Linux 实例

您可以使用 SSH 连接到您的 Linux 实例,然后使用 open-tunnel 命令建立私有隧道。可在单连接或多连接模式下使用 open-tunnel

有关如何使用 Amazon CLI 通过 SSH 连接到您的 Linux 实例,请参阅 使用 Amazon CLI进行连接

下面的示例使用了 OpenSSH。您可以使用任何其他支持代理模式的 SSH 客户端。

单一 连接

仅允许使用 SSH 和 open-tunnel 命令建立到实例的单一连接

按照如下所示使用 sshopen-tunnel Amazon CLI 命令。-o 代理命令包含创建通往实例的私有隧道的 open-tunnel 命令。

ssh -i my-key-pair.pem ec2-user@i-0123456789example \ -o ProxyCommand='aws ec2-instance-connect open-tunnel --instance-id i-0123456789example'

对于:

  • -i - 指定用于启动实例的密钥对。

  • ec2-user@i-0123456789example - 指定用于启动实例的 AMI 的用户名和实例 ID。

  • --instance-id - 指定要连接到的实例的 ID。或者,指定 %h,它从用户那里提取实例 ID。

多连接

要允许与一个实例建立多连接,请先运行 open-tunnel Amazon CLI 命令开始侦听新的 TCP 连接,然后使用 ssh 创建到实例的新 TCP 连接和私有隧道。

要使用 SSH 和 open-tunnel 命令允许建立到实例的多连接
  1. 运行以下命令开始侦听本地机器上指定端口上的新 TCP 连接。

    aws ec2-instance-connect open-tunnel \ --instance-id i-0123456789example \ --local-port 8888

    预期输出

    Listening for connections on port 8888.
  2. 新的终端窗口中,运行以下 ssh 命令以创建到实例的新 TCP 连接和私有隧道。

    ssh -i my-key-pair.pem ec2-user@localhost -p 8888

    预期输出 - 在第一个终端窗口中,您将看到以下内容:

    [1] Accepted new tcp connection, opening websocket tunnel.

    您可能还会看到以下内容:

    [1] Closing tcp connection.

使用 Amazon CLI 连接到 Linux 实例

如果仅知道实例 ID,则可以使用 ec2-instance-connect Amazon CLI 命令通过 SSH 客户端连接到实例。有关使用 ec2-instance-connect 命令的更多信息,请参阅 使用 Amazon CLI进行连接

先决条件

安装 Amazon CLI 版本 2 并使用您的凭证对其进行配置。有关更多信息,请参阅《Amazon Command Line Interface 用户指南》中的 Install or update to the latest version of the Amazon CLIConfigure the Amazon CLI。或者,在其预先经过身份验证的 shell 中打开 Amazon CloudShell 并运行 Amazon CLI 命令。

要使用实例 ID 和 EC2 Instance Connect Endpoint 连接到实例

如果仅知道实例 ID,请使用 ec2-instance-connect CLI 命令,并指定 ssh 命令、实例 ID 和 --connection-type 参数及 eice 值。

aws ec2-instance-connect ssh --instance-id i-1234567890example --connection-type eice
提示

如果使用此命令时出现错误,请确保使用的是 Amazon CLI 版本 2。ssh 参数仅适用于 Amazon CLI 版本 2。有关更多信息,请参阅《Amazon Command Line Interface 开发人员指南》中的关于 Amazon CLI 版本 2

故障排除

使用以下信息帮助您诊断和修复您在使用 EC2 Instance Connect Endpoint 连接实例时可能遇到的问题。

无法连接到您的实例

以下是您可能无法连接到实例的常见原因:

  • 安全组 – 检查分配给 EC2 Instance Connect Endpoint 和您的实例的安全组。有关所需安全组规则的更多信息,请参阅 EC2 Instance Connect Endpoint 安全组

  • 实例状态 – 验证您的实例是否处于 running 状态。

  • 密钥对 – 如果您用于连接的命令需要私钥,请确认您的实例是否有公钥,以及您是否拥有相应的私钥。

  • IAM 权限 – 验证您是否拥有所需的 IAM 权限。有关更多信息,请参阅 授予使用 EC2 Instance Connect 端点的权限

有关更多故障排除提示,请参阅 排查实例的连接问题。

ErrorCode: AccessDeniedException

如果您收到 AccessDeniedException 错误,并且 IAM policy 中已指定 maxTunnelDuration 条件,确保当您连接到实例时指定 --max-tunnel-duration 参数。有关该参数的更多信息,请参阅 Amazon CLI 命令参考中的 open-tunnel