我已经创建并启动了 Amazon EC2 Linux 实例,但是无法使用 SSH 或通过 SSH 连接的实用工具(如 PuTTY)连接到实例。当我尝试从 Linux 命令 shell 连接时,连接尝试挂起,当我使用 PuTTY 客户端连接时,在 PuTTY 客户端用户界面中显示类似以下内容的错误:
Network error: Connection timed out
两个问题都指示,您无法使用 SSH 从当前 IP 地址访问 EC2 实例。
默认情况下未启用与 EC2 实例的网络连接。您需要在 AWS 管理控制台中对 VPC 进行某些配置更改。
为确保您可以使用 SSH 连接到 EC2 Linux 实例,首先请确认您的安全组是否允许从您的 IP 地址通过 SSH 访问 EC2 实例。
- 打开 Amazon EC2 控制台。
- 在导航窗格中,选择 Instances。
- 查找要通过 SSH 连接的 EC2 实例。
- 在屏幕底部的 Description 选项卡中,选择要连接的 EC2 实例的安全组。
- 在屏幕底部的窗格中的 Inbound (入站) 选项卡中,确保设置了允许从当前公有 IP 地址进行 SSH 访问的规则。
注意:如果不确定当前 IP 是什么,请在首选搜索引擎中输入“my IP address”,记下返回的 IP。另外,大多数设备会显示在其网络设置中当前分配给它们的 IP 地址。
- 如果设备所使用的 IP 不在列表中,请选择 Edit,然后选择 Add rule。
- 对于 Source,选择 My IP。
- 选择 Save。
接下来,确保您的 VPC 路由表配置为允许 Internet 流量出入。
- 打开 Amazon VPC 控制台。
- 在导航窗格中,选择 Route Tables,然后从列表中选择您的 VPC 路由表。
- 在 Routes (路由) 选项卡中,确保有指向 Internet 网关的默认路由。
- 如果没有,请从导航窗格中选择 Internet Gateways,并复制您的 Internet 网关 ID。如果没有 Internet 网关,请创建一个并将其连接至您的 VPC。确保复制新 Internet 网关 的 ID。
- 返回到 Route Tables,然后选择 Routes 选项卡。
- 编辑并创建将 0.0.0.0/0 指向您的 Internet 网关 ID 的路由。
- 保存路由表。
注意:您的网络 ACL 规则必须允许入站和出站 IPv4 流量。
要使用 IPv6 地址连接到实例,请检查以下各项:
- 与您的子网关联的路由表必须含有一个将所有 IPv6 流量 (::/0) 指向 Internet 网关的路由。
- 您的安全组规则必须允许适当端口(Linux 的端口 22 和 Windows 的端口 3389)传输来自本地 IPv6 地址的入站流量。
- 您的网络 ACL 规则必须允许入站和出站 IPv6 流量。
- 如果您从旧版 AMI 启动实例,则其可能未针对 DHCPv6 进行配置(IPv6 地址不会在网络接口上自动识别)。有关更多信息,请参阅《Amazon VPC 用户指南》中的在实例中配置 IPv6。
- 您的本地计算机必须拥有 IPv6 地址,且必须配置为使用 IPv6。
如果已完成这些步骤,还是无法连接到 EC2 实例,请确保 SSH 守护程序在 EC2 实例上运行,并且 EC2 实例配置为侦听默认端口 (TCP 22)。有关排查连接问题的更多信息,请参阅排查实例的连接问题或创建 AWS Support 案例。