试图访问 EC2实例时超时的可能原因

我不能 SSH 到我的实例-操作超时。原因是什么? 我能做些什么来解决这个问题?重新启动通常需要很长时间才能生效,而且可能只会让事情变得更糟

更新: 这不是关于权限-我可以登录正常只是罚款。我怀疑可能是因为记忆问题

147545 次浏览

您是否为实例设置了适当的安全组?例如,允许从您的网络访问实例上的22端口。(默认情况下,禁止所有通信。)

更新: 好的,不是安全组问题。但是,如果从相同的 AMI 启动另一个实例并尝试访问该实例,问题是否仍然存在?也许这个特定的 EC2实例只是随机失败的某种原因-这只是时间问题,这样的事情发生。(推荐阅读: 云架构: 最佳实践(PDF) ,一篇由 Jinesh Varia 撰写的论文,他是 Amazon 的 Web 服务布道者。特别是“为失败而设计,没有什么会失败”一节。)

你看过实例的控制台输出了吗?您可以通过 AWS 控制台(实例-> 右键单击实例-> 获取系统日志)完成此操作。我曾经遇到过 EC2实例上的网络服务无法正确启动的情况,导致 SSH 连接超时; 重新启动实例通常会修复一些问题。

还有一种可能。AWS 安全组被设置为只能处理特定的传入 IP 地址。如果您的安全组以这种方式设置,您(或帐户持有人)将需要将您的 IP 地址添加到安全组。为此,请打开 AWS 指示板,选择安全组,选择安全组并单击入站选项卡。然后适当地添加你的 IP 地址。

我也遇到了同样的问题,解决方法就是加入我的 本地机器的 IP 到主动安全性中的入站规则列表 小组。在下面的入站对话框中,在端口范围内输入22,在源字段中输入 本地 IP 地址/32,并在下拉列表中保留“自定义 tcp 规则”。

enter image description here

我遇到了同样的问题,解决方案是允许从任何地方访问活动安全组中的入站规则列表。在入站对话框中,在端口范围内输入22,在源字段中输入 任何地方,并在下拉列表中选择“ ssh”。

PS: 这可能不是推荐的解决方案,因为它意味着这个实例可以从任何机器上 ssh’,但是我无法让它与我的本地 IP 一起工作。

以下是可能出现的问题:

  • 最有可能的一个是,安全组没有正确地配置为在22端口提供对 IP 的 SSH 访问。更改安全设置不需要重新启动服务器才能有效,但需要等待几分钟才能适用。

  • 本地防火墙配置不允许 SSH 访问服务器。(你可以尝试不同的互联网连接,你的电话/狗试试)

  • 服务器没有正确启动(那么即使在亚马逊控制台上访问检查也会失败) ,在这种情况下,您需要停止并启动服务器。

毁灭,重新创造

我有一个可用区域,在那里我可以连接,另一个在那里我不能。几个小时后,我感到非常沮丧,我删除了可用区域中的所有内容。

把所有的东西都重新建立起来,我必须确保创造出所有的东西,包括:

  • 创建 < em > VPC
    • CIDR: 10.0.0.0/24
  • 创建 互联网门户
  • 互联网门户连接到 VPC
  • 创建 路由表
  • 路线添加到 < em > 路由表
    • Destination: 0.0.0.0/0
    • Target: <Internet Gateway from earlier>
  • 创建 < em > 子网
    • CIDR: 10.0.0.0/24
    • Routing Table: <Routing Table from earlier

我费了好大劲才弄到这些。我已经按照我认为最有效的方式订购了这些步骤,但是您可能需要调整它们,以便为下一个项目提供一个可用的步骤。

建议

我不是建议你像我一样使用热核武器。我提供所有这些信息,是为了让你能够检查这些关联,以确保你的关联是适当的。

连接使用 ssh 如下:

ssh -i keyname.pem username@xxx.xx.xxx.xx

其中,keyname.pem是您的私钥的名称,username是您的 OS 发行版的正确用户名,xxx.xx.xxx.xx是公共 IP 地址。

当超时或失败时,请检查以下内容:

保安组

确保有一个 Tcp 端口22和所有 ip 或您的 ip 的入站规则。您可以通过 ec2菜单在实例选项中找到安全组。

路由表

对于 vpc 中的新子网,需要更改为指向 0.0.0.0到 Internet 网关目标的路由表。当您在 vpc 中创建子网时,默认情况下它会分配默认的路由表,该表可能不接受来自 Internet 的传入流量。您可以在 vpc 菜单中编辑路由表选项,然后编辑子网。

弹性 IP

对于 vpc 中的实例,需要分配一个 公共弹性 IP 地址,并将其与实例关联。私人 IP 地址无法从外部访问。您可以在 ec2菜单中获得一个弹性 ip (而不是实例菜单)。

用户名

确保你使用的是 正确的用户名。它应该是 ec2-userrootubuntu之一。如果有必要,都试试。

私人钥匙

确保使用的是 正确的私钥(在启动实例时下载或选择的那个)。看起来很明显,但是复制粘贴让我吃了两次亏。

这个答案是给像我这样愚蠢的人们的。EC2的公共 DNS 在重新启动时可能会发生更改。如果您没有意识到这一点,并尝试 SSH 到您的旧公共 DNS,连接将停止和超时。这可能导致您认为 EC2或安全组出了问题,或者... 不,只是将 SSH 插入到新的 DNS 中。并更新您的 ~/.ssh/config文件,如果你必须!

我在使用没有密码的公共 Wifi 时也遇到过类似的问题。将互联网连接切换到安全连接确实解决了这个问题。

如果您的 EC2实例无法使用 SSH 访问,您需要检查:

  • 对于您的实例,Security Group 允许 < em > 入站 SSH 访问(检查: 查看规则)。

如果您正在使用 VPC 实例(您的实例附加了 VPC 身份证子网 ID) ,请检查:

  1. 在 VPC 仪表板,找到使用的子网 ID 是附加到您的 VPC。
  2. 检查附加的 路线表 ,它应该以 0.0.0.0/0为目标,以 互联网门户为目标。

在 Linux 上,您还可以检查实例 交际系统日志中的路由信息,例如:

++++++++++++++++++++++++++++++++++++++Net device info+++++++++++++++++++++++++++++++++++++++
+--------+------+------------------------------+---------------+-------+-------------------+
| Device |  Up  |           Address            |      Mask     | Scope |     Hw-Address    |
+--------+------+------------------------------+---------------+-------+-------------------+
|   lo   | True |          127.0.0.1           |   255.0.0.0   |   .   |         .         |
|  eth0  | True |         172.30.2.226         | 255.255.255.0 |   .   | 0a:70:f3:2f:82:23 |
+--------+------+------------------------------+---------------+-------+-------------------+
++++++++++++++++++++++++++++Route IPv4 info+++++++++++++++++++++++++++++
+-------+-------------+------------+---------------+-----------+-------+
| Route | Destination |  Gateway   |    Genmask    | Interface | Flags |
+-------+-------------+------------+---------------+-----------+-------+
|   0   |   0.0.0.0   | 172.30.2.1 |    0.0.0.0    |    eth0   |   UG  |
|   1   |   10.0.3.0  |  0.0.0.0   | 255.255.255.0 |   lxcbr0  |   U   |
|   2   |  172.30.2.0 |  0.0.0.0   | 255.255.255.0 |    eth0   |   U   |
+-------+-------------+------------+---------------+-----------+-------+

其中 UG标志显示您的互联网网关。

有关详细信息,请参阅: 连接到实例的疑难解答 at Amazon docs。

enter image description here

两小时后我发现了这个

注意 ssh ip 120.138.105.251/32

  • 实例 IP 地址

  • 它不是你的本地 IP 127.0.0.1

  • 它不是你的本地 IP localhost

但是,但是

它的 你的公共 IP 地址的 个人电脑,您试图从中访问 aws 实例

  1. 转到 https://www.whatismyip.com/无论 IP 地址放在

如果你想完全打开 SSH 到所有的 IP 地址 enter image description here

这是完全可访问的条目的外观-基本推荐 enter image description here

这是我在制作中使用的 enter image description here

查看 AWS 文档的帮助页面:

Http://docs.aws.amazon.com/awsec2/latest/userguide/troubleshootinginstancesconnecting.html#troubleshootinginstancesconnectiontimeout 你可能会在那里找到你的解决方案。对我来说,这部分解决了问题:

[ EC2-VPC ]检查子网的路由表。你需要一个路由 将 VPC 之外的所有流量发送到 Internet 网关 VPC.

  • https://console.aws.amazon.com/vpc/打开 Amazon VPC 控制台。

  • 在导航窗格中,选择 Internet 网关。验证是否有一个连接到 VPC 的 Internet 网关。否则,选择 Create 网关,并按照指示创建一个互联网 网关,选择 Internet 网关,然后选择附加到 VPC 并按照说明将其连接到您的 VPC

  • 在导航窗格中,选择子网,然后选择子网。

  • 在 Route Table 选项卡上,验证是否有一个以0.0.0.0.0为目标的路由,以及您的 VPC 的 Internet 网关作为 否则,选择路由表(rtb-xxxxxxx)的 ID 导航到路由表的 Routes 选项卡,选择 Edit,Add 另一个路由,在目的地输入0.0.0.0.0,选择您的 Internet 然后选择 Save。

但我建议你看看上面的链接所有的选项,你可能会发现一个或多个问题,你得到了。

我的问题-我有端口22为“我的 IP”打开,并改变了互联网连接和 IP 地址的变化造成的。所以不得不改回来。

要使 VPC 子网中的实例能够从 Internet 访问 ssh,请执行以下操作:

  • 将 Internet 网关连接到您的 VPC。
  • 确保子网的路由表指向 Internet 网关。
  • 确保子网中的实例具有全局唯一的 IP 地址(公共 IPv4地址、弹性 IP 地址或 IPv6地址)。
  • 确保您的网络访问控制(在 VPC 级别)和安全组规则(在 ec2级别)允许相关流量流入和流出您的实例。确保为两者都启用了网络公共 IP 地址。默认情况下,NetworkAcL 允许所有入站和出站流量,除非显式地另外配置

对我来说,它是托管在 t2.microlinux EC2实例上的 apache 服务器,而不是 EC2实例本身。

我通过以下方式解决了这个问题:

sudo su

service httpd restart

基于 @ted.strauss的答案,您可以从下拉菜单中选择 SSHMyIP,而不是导航到第三方站点。

一旦应用了 Rules,就重新启动 Ec2实例

我也有同样的问题,我通过在安全组中添加一个规则来解决它

入站 SSH 0.0.0.0.0

或者你可以只添加你的 IP 地址

对我来说,就是我已经从引导卷中删除了所有东西,再也不能连接到实例了。

我正在处理这个实例,它很好,就在第二天,当我试图将 SSH 插入到我的实例时,它显示-连接超时。

我试图通过这个职位,但没有工作。所以我做了-

Edit inbound rules from source 列中选择 MY IP,它将自动以 CIDR 格式(XXX.XXX.XXX.XX/32)填充您的公共 IP 地址。

我试过了。Strauss 给出了本地 IP 地址,但是对我的情况没有帮助。所以我选择了我的 IP 地址,并且成功了。

希望这对谁有帮助!

先定位域名系统。如果失败,那么在启动向导中配置入站/出站规则。配置所有流量和所有协议,只保存默认选项。再次与您的本地系统,然后应该工作

如果您刚刚创建了一个新实例,但无法连接到它,那么我可以通过终止该实例并创建一个新实例来解决这个问题。当然,这只有当它是一个新实例并且您没有在它上面做更多的工作时才会起作用。

允许从 ufw 启用 ssh 和端口22,然后启用它并使用 status 命令进行检查

sudo ufw allow ssh
sudo ufw allow 22
sudo ufw enable
sudo ufw status

ssh期间连接获得 timed-out可能有多种原因。其中的情况下,我已经看到这是当你的 routesubnet没有关联。

enter image description here

在我的情况下,实例是可达的,但突然变得不可达。

我只是 重启的实例从 aws 控制台和它解决了我的问题。

如果你今天仍然有这个问题,而且没有其他的解决方案有帮助,那么对我有用的是: 进入安全组,选择一个安全组或者创建一个,然后点击添加新的入站规则,点击源代码下拉菜单并选择“ from where”,这将设置0.0.0.0.0作为源代码 ip。

你现在应该没事了。

确保您的计算机上已经有私钥文件。

如果你需要更清晰的描述,你可以看看这个视频。

Https://www.youtube.com/watch?v=8uqtmcx_kg0

我的解决方案与上述所有解决方案都不同。我忘了开 VPN 了。当我关掉它的时候,问题就解决了。

如果您试图从另一个 EC2实例进行连接,则必须确保只使用 二等兵 IPv4地址来引用它们,否则连接将无法工作。

这将是原因之一。启用 ufw并重新启动实例时。首先,您必须在启用 ufw之前添加 22/tcp。下面是命令

$ ufw allow 22/tcp

如果您已经犯了这个错误,那么请遵循以下指南

  • 启动恢复实例。
  • 停止阻塞的实例(不要终止)
  • 分离阻塞的实例卷。
  • 将阻塞卷附加到恢复实例。
  • 通过 ssh/putty 将日志记录到恢复实例(Newly Launted)
  • 键入 sudo lsblk以显示附加卷
  • 验证阻塞卷的名称。通常从/dev/xvdf 开始。
  • 安装阻塞体积。
$ sudo mount /dev/xvdf1 /mnt
$ cd /mnt/etc/ufw
  • 打开 ufw 配置文件
$ sudo vi ufw.conf
  • 在 vi 编辑器中按 i启用插入模式

  • 更新 ENABLED=yesENABLED=no

单击 ESC并键入 :wq以更新文件。

  • 验证文件内容。其中更新为 ENABLED=yes-> ENABLED=no
$ sudo cat ufw.conf
  • 从恢复实例中删除已安装的阻塞卷
$ cd ~
$ sudo umount /mnt
  • 现在将阻塞的安装卷从恢复实例中分离出来,并将其作为 /dev/sda1重新附加到原始实例。

最后,启动被阻塞的实例。这样你就可以访问你的实例了。如果您再次启用 ufw,不要忘记允许22/tcp。

sudo ufw allow ssh //this one are to be added
sudo ufw allow 22 // this one
sudo ufw enable
sudo ufw status