使用 EC2 Instance Connect 连接到 Linux 实例
以下说明旨在介绍如何通过 Amazon EC2 控制台、AWS CLI 或 SSH 客户端使用 EC2 Instance Connect 连接到 Linux 实例。
在使用 EC2 Instance Connect 通过控制台或 AWS CLI 连接到实例时,EC2 Instance Connect API 会将一个 SSH 公有密钥推送到实例元数据并在其中保留 60 秒。附加到用户的 IAM 策略负责授权此操作。如果您更喜欢使用自己的 SSH 密钥,则可以使用 SSH 客户端,并使用 EC2 Instance Connect 将您的 SSH 密钥显式推送到实例。
要求
开始操作之前,务必查看先决条件。
使用 Amazon EC2 控制台连接
您可以通过 Amazon EC2 控制台使用 EC2 Instance Connect 连接到实例。
要求
要使用 Amazon EC2 控制台进行连接,实例必须具有一个公有 IPv4 或公有 IPv6 地址。如果实例只有私有 IPv4 地址,则可使用 ec2-instance-connect AWS CLI 命令进行连接。
使用 Amazon EC2 控制台连接到实例
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择实例。
-
选择实例,然后选择连接。
-
选择 EC2 Instance Connect 选项卡。
-
对于连接类型,选择使用 EC2 Instance Connect 进行连接。
-
如果可以选择,请选择要连接到的 IP 地址。否则,系统会自动选择 IP 地址。
-
对于用户名,请验证用户名。
-
选择连接以建立连接。浏览器内终端窗口随即打开。
使用 AWS CLI进行连接
可以使用 ec2-instance-connect
连接类型
auto
(默认值)-
EC2 Instance Connect 尝试按以下顺序使用实例的 IP 地址并使用相应的连接类型进行连接:
-
公有 IPv4:
direct
-
私有 IPv4:
eice
-
公有 IPv6:
direct
-
direct
-
EC2 Instance Connect 尝试按以下顺序使用实例的 IP 地址进行连接:
-
公有 IPv4
-
公有 IPv6
-
私有 IPv4(不通过 EC2 Instance Connect 端点进行连接)
-
eice
-
EC2 Instance Connect 尝试使用实例的私有 IPv4 地址和 EC2 Instance Connect 端点进行连接。
注意
将来,我们可能会更改 auto
连接类型的行为。为确保使用所需的连接类型,我们建议您将 --connection-type
明确设置为 direct
或 eice
。
使用 ec2-instance-connect
要求
您必须使用 AWS CLI 版本 2。有关更多信息,请参阅 Install or update to the latest version of the AWS CLI。
要使用实例 ID 连接到实例
如果只知道实例 ID,并想让 EC2 Instance Connect 确定连接到实例时要使用的连接类型,请使用 ec2-instance-connectssh
命令和实例 ID。
aws ec2-instance-connect ssh --instance-id
i-1234567890example
要使用实例 ID 和 EC2 Instance Connect Endpoint 连接到实例
如果您想通过 EC2 Instance Connect Endpoint 连接到您的实例,请使用前面的命令并通过 eice
值指定 --connection-type
参数。
aws ec2-instance-connect ssh --instance-id
i-1234567890example
--connection-type eice
要使用实例 ID 和您自己的私有密钥文件连接到实例
如果您想使用自己的私有密钥通过 EC2 Instance Connect Endpoint 连接到您的实例,请指定实例 ID 和私有密钥文件的路径。不要在路径中包含 file://
;以下示例将会失败:file:///path/to/key
。
aws ec2-instance-connect ssh --instance-id
i-1234567890example
--private-key-file/path/to/key
.pem
提示
如果使用这些命令时出现错误,务必确保使用的是 AWS CLI 版本 2,因为 ssh
命令仅在此主要版本中可用。我们还建议定期更新到 AWS CLI 版本 2 的最新次要版本,以便使用最新功能。有关更多信息,请参阅《AWS Command Line Interface 开发人员指南》中的关于 AWS CLI 版本 2。
使用您自己的密钥和 SSH 客户端进行连接
您可以使用自己的 SSH 密钥,并在使用 EC2 Instance Connect API 时从您选择的 SSH 客户端连接到您的实例。这使您能够从将公有密钥推送到实例的 EC2 Instance Connect 功能中受益。此连接方法适用于具有公有和私有 IP 地址的实例。
要求
-
密钥对的要求
-
支持的类型:RSA(OpenSSH 和 SSH2)和 ED25519
-
支持的长度:2048 和 4096
-
有关更多信息,请参阅 使用第三方工具创建密钥对,并将公有密钥导入 Amazon EC2。
-
-
当连接到仅具有私有 IP 地址的实例时,启动 SSH 会话的本地计算机必须连接到 EC2 Instance Connect 服务端点(以便将 SSH 公有密钥推送到实例)且与实例的私有 IP 地址有网络连接,才能建立 SSH 会话。EC2 Instance Connect 服务终端节点可以通过互联网或 AWS Direct Connect 公共虚拟接口访问。要连接到实例的私有 IP 地址,您可以利用 AWS Direct Connect
、AWS Site-to-Site VPN 或 VPC 对等连接等服务。
使用您自己的密钥和任何 SSH 客户端连接到实例
-
(可选)生成新的 SSH 私有密钥和公有密钥
您可以使用以下命令生成新的 SSH 私有密钥和公有密钥(
my_key
和my_key.pub
):ssh-keygen -t rsa -f my_key
-
将 SSH 公有密钥推送到实例
使用 send-ssh-public-key
命令可将 SSH 公有密钥推送到实例。如果使用 AL2023 或 Amazon Linux 2 启动实例,则 AMI 的默认用户名为 ec2-user
。如果使用 Ubuntu 启动实例,则 AMI 的默认用户名为ubuntu
。以下示例将公有密钥推送到指定的可用区中的指定实例,以对
ec2-user
进行身份验证。aws ec2-instance-connect send-ssh-public-key \ --region
us-west-2
\ --availability-zoneus-west-2b
\ --instance-idi-001234a4bf70dec41EXAMPLE
\ --instance-os-userec2-user
\ --ssh-public-key file://my_key.pub
-
使用私有密钥连接到实例
从实例元数据中删除公有密钥之前,可以使用 ssh 命令通过私有密钥连接到实例(在 60 秒后删除)。指定与公有密钥对应的私有密钥、用于启动实例的 AMI 的默认用户名以及实例的公有 DNS 名称(如果通过私有网络连接,请指定私有 DNS 名称或 IP 地址)。添加
IdentitiesOnly=yes
选项以确保仅使用 ssh config 中的文件和指定的密钥进行连接。ssh -o "IdentitiesOnly=yes" -i
my_key
ec2-user
@ec2-198-51-100-1.compute-1.amazonaws.com
故障排除
如果您在尝试连接到实例时遇到错误,请参阅下文: