使用 EC2 Instance Connect 进行连接
以下说明介绍如何使用 EC2 Instance Connect 连接到 Linux 实例。
限制
-
支持的 Linux 分配:
Amazon Linux 2(任何版本)
Ubuntu 16.04 或更高版本
-
所有支持 Amazon 除非洲(开普敦)、亚太地区(香港)、亚太地区(大阪)、中国(北京)、中国(宁夏)、欧洲(米兰)和中东(巴林)以外的区域。
-
要使用 Amazon EC2 控制台(基于浏览器的客户端)进行连接,实例必须具有公有 IPv4 地址。
-
如果实例没有公有 IP 地址,则可以使用 SSH 客户端或 EC2 Instance Connect CLI,通过私有网络连接到实例。例如,您可以从同一 VPC 内,或通过 VPN 连接、Transit Gateway 或 Amazon Direct Connect 进行连接。
-
EC2 Instance Connect 不支持使用 IPv6 地址进行连接。
先决条件
-
在实例上安装 EC2 Instance Connect。
有关更多信息,请参阅 设置 EC2 Instance Connect。
-
(可选)在本地计算机上安装 SSH 客户端。
如果用户仅使用 Amazon EC2 控制台(基于浏览器的客户端)或 EC2 Instance Connect CLI 连接到实例,则无需安装 SSH 客户端。您的本地计算机很可能已默认安装 SSH 客户端。您可以通过在命令行键入 ssh 来检查 SSH 客户端。如果您的本地计算机无法识别该命令,您可安装 SSH 客户端。有关在 Linux 或 macOS X 上安装 SSH 客户端的信息,请参阅 http://www.openssh.com
。有关在 Windows 10 上安装 SSH 客户端的信息,请参阅 Windows 中的 OpenSSH 。 -
(可选)在本地计算机上安装 EC2 Instance Connect CLI。
如果用户仅使用 Amazon EC2 控制台(基于浏览器的客户端)或 SSH 客户端连接到实例,则无需安装 EC2 Instance Connect CLI。有关更多信息,请参阅任务 3:(可选)在电脑上安装 EC2 Instance Connect CLI。此连接方法适用于具有公有 IP 地址的实例。
使用 EC2 Instance Connect 进行连接
使用 Amazon EC2 控制台(基于浏览器的客户端)进行连接
您可以通过从 Amazon EC2 控制台中选择实例,然后选择使用 EC2 Instance Connect 进行连接,以使用基于浏览器的客户端连接到实例。Instance Connect 处理权限并提供成功的连接。
从 Amazon EC2 控制台使用基于浏览器的客户端连接到您的实例
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择实例。
-
选择实例,然后选择连接。
-
选择 EC2 Instance Connect。
-
验证用户名并选择连接以打开终端窗口。
使用 EC2 Instance Connect CLI 进行连接
您可以使用 EC2 Instance Connect CLI 并仅提供实例 ID 以连接到实例,同时 Instance Connect CLI 在一次调用中执行以下三个操作:它生成一次性使用的 SSH 公有密钥,将密钥推送到实例以在其中保留 60 秒,并将用户连接到实例。您可以在 Instance Connect CLI 中使用基本 SSH/SFTP 命令。
此连接方法适用于具有公有和私有 IP 地址的实例。当连接到仅具有私有 IP 地址的实例时,启动会话的本地计算机必须连接到 EC2 Instance Connect 服务终端节点(将 SSH 公钥推送到实例)以及到实例的私有 IP 地址的网络连接。EC2 Instance Connect 服务终端节点可以通过互联网或 Amazon Direct Connect 公共虚拟接口访问。要连接到实例的私有 IP 地址,您可以利用 Amazon Direct Connect
-i
使用 时不支持 mssh。在使用 mssh 命令连接到实例时,无需指定任何类型的身份文件,因为 Instance Connect 会管理密钥对。
使用您自己的密钥和 SSH 客户端进行连接
您可以使用自己的 SSH 密钥,并在使用 EC2 Instance Connect API 时从您选择的 SSH 客户端连接到您的实例。这使您能够从将公有密钥推送到实例的 Instance Connect 功能中受益。此连接方法适用于具有公有和私有 IP 地址的实例。
要求
-
密钥对的要求
-
支持的类型:RSA(OpenSSH 和 SSH2)和 ED25519
-
支持的长度:2048 和 4096
-
有关更多信息,请参阅 使用第三方工具创建密钥对,并将公有密钥导入 Amazon EC2。
-
-
当连接到仅具有私有 IP 地址的实例时,启动 SSH 会话的本地计算机必须连接到 EC2 Instance Connect 服务终端节点(将 SSH 公钥推送到实例)以及到实例的私有 IP 地址的网络连接,才能建立 SSH 会话。EC2 Instance Connect 服务终端节点可以通过互联网或 Amazon Direct Connect 公共虚拟接口访问。要连接到实例的私有 IP 地址,您可以利用 Amazon Direct Connect
、Amazon 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 公有密钥推送到实例。如果使用 Amazon Linux 2 启动实例,则 AMI 的默认用户名是
ec2-user
。如果使用 Ubuntu 启动实例,则 AMI 的默认用户名是ubuntu
。以下示例将公有密钥推送到指定的可用区中的指定实例,以对
ec2-user
进行身份验证。$
aws ec2-instance-connect send-ssh-public-key \ --instance-id
i-001234a4bf70dec41EXAMPLE
\ --availability-zoneus-west-2b
\ --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
问题排查
如果您在尝试连接到实例时遇到错误,请参阅下文: