使用 EC2 Instance Connect 端点连接到 Linux 实例
您可以使用 EC2 Instance Connect 端点连接到支持 SSH 的 Linux 实例。
有关如何连接到 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 控制台连接到实例,如下所示。
使用基于浏览器的客户端连接到实例
-
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择实例。
-
选择该实例,然后选择连接。
-
选择 EC2 Instance Connect 选项卡。
-
对于连接类型,选择使用 EC2 Instance Connect Endpoint 进行连接。
-
对于 EC2 Instance Connect 端点,选择该 EC2 Instance Connect 端点的 ID。
-
对于用户名,如果您用于启动实例的 AMI 使用的用户名不是
ec2-user
,请输入正确的用户名。 -
对于最大隧道持续时间(秒),输入 SSH 连接允许的最大持续时间。
该持续时间必须符合 IAM 策略中指定的任何
maxTunnelDuration
条件。如果您无权访问该 IAM 策略,请联系您的管理员。 -
选择连接。这将为您的实例打开一个终端窗口。
使用 SSH 连接到 Linux 实例
您可以使用 SSH 连接到您的 Linux 实例,然后使用 open-tunnel
命令建立私有隧道。可在单连接或多连接模式下使用 open-tunnel
。
有关如何使用 Amazon CLI 通过 SSH 连接到您的 Linux 实例,请参阅 使用 Amazon CLI进行连接。
下面的示例使用了 OpenSSH
单一 连接
仅允许使用 SSH 和 open-tunnel
命令建立到实例的单一连接
按照如下所示使用 ssh
和 open-tunnel-o
代理命令包含创建通往实例的私有隧道的 open-tunnel
命令。
ssh -i
my-key-pair
.pemec2-user
@i-0123456789example
\ -o ProxyCommand='aws ec2-instance-connect open-tunnel --instance-idi-0123456789example
'
对于:
-
-i
- 指定用于启动实例的密钥对。 -
- 指定用于启动实例的 AMI 的用户名和实例 ID。ec2-user
@i-0123456789example
-
--instance-id
- 指定要连接到的实例的 ID。或者,指定%h
,它从用户那里提取实例 ID。
多连接
要允许与一个实例建立多连接,请先运行 open-tunnelssh
创建到实例的新 TCP 连接和私有隧道。
要使用 SSH 和 open-tunnel
命令允许建立到实例的多连接
-
运行以下命令开始侦听本地机器上指定端口上的新 TCP 连接。
aws ec2-instance-connect open-tunnel \ --instance-id
i-0123456789example
\ --local-port8888
预期输出
Listening for connections on port 8888.
-
在新的终端窗口中,运行以下
ssh
命令以创建到实例的新 TCP 连接和私有隧道。ssh -i
my-key-pair
.pem ec2-user@localhost -p8888
预期输出 - 在第一个终端窗口中,您将看到以下内容:
[1] Accepted new tcp connection, opening websocket tunnel.
您可能还会看到以下内容:
[1] Closing tcp connection.
使用 Amazon CLI 连接到 Linux 实例
如果仅知道实例 ID,则可以使用 ec2-instance-connect
先决条件
安装 Amazon CLI 版本 2 并使用您的凭证对其进行配置。有关更多信息,请参阅《Amazon Command Line Interface 用户指南》中的 Install or update to the latest version of the Amazon CLI 和 Configure the Amazon CLI。或者,在其预先经过身份验证的 shell 中打开 Amazon CloudShell 并运行 Amazon CLI 命令。
要使用实例 ID 和 EC2 Instance Connect Endpoint 连接到实例
如果仅知道实例 ID,请使用 ec2-instance-connectssh
命令、实例 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