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

我无法SSH到我的实例 – 操作超时。 可能是什么原因,我能做些什么来解决呢? 重新启动通常需要很长时间才能生效,并且可能会使事情变得更糟

更新:这不是关于权限 – 我可以正常login就好了。 我怀疑这可能是因为内存问题

您是否为该实例设置了适当的安全组? 即一个允许从您的networking访问实例上的端口22。 (默认情况下,所有stream量都被禁止。)

更新:好吧,不是一个安全组的问题。 但是,如果从同一个AMI启动另一个实例并尝试访问该问题,问题是否会持续存在? 也许这个特定的EC2实例只是随机失败 – 这只是时间的问题,类似的事情发生。 (推荐阅读: “云计算架构:最佳实践” (PDF),这是由amazon web services传播者Jinesh Varia撰写的一篇论文,尤其是“devise失败,什么都不会失败”一节。

我遇到了同样的问题,解决scheme最终将本地计算机的IP添加到活动安全组中的入站规则列表中。 在下面的入站对话框中,在端口范围中input22,在源域中input本地IP / 32,并在下拉列表中保留“自定义TCP规则”。

在这里输入图像说明

破坏并重新创build

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

build立一切,我必须确保创造一切。 这包括:

  • 创buildVPC
    • CIDR: 10.0.0.0/24
  • 创buildInternet网关
  • Internet网关连接到VPC
  • 创build路由表
  • 添加路由路由表
    • Destination: 0.0.0.0/0
    • Target: <Internet Gateway from earlier>
  • 创build子网
    • CIDR: 10.0.0.0/24
    • Routing Table: <Routing Table from earlier

为了得到所有这一切,我花了很多的摸索。 我已经按照我认为可能最有效的方式订购了这些步骤,但是您可能需要对其进行调整,以便为下一个项目提供一个项目。

build议

我并不是说你像我那样热核。 我提供所有这些信息,以便您可以检查这些关联,以确保您的合适。

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

连接使用ssh像这样:

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

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

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

安全组

确保有一个入站规则的TCP端口22 ,或者所有IPS或你的IP。 您可以在实例选项中通过ec2菜单find安全组。

路由表

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

弹性IP

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

用户名

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

私钥

确保您使用的是正确的私钥 (您下载的或启动实例时select的)。 似乎很明显,但复制粘贴让我两次。

你看过从实例的控制台输出吗? 您可以通过AWS控制台执行此操作(实例 – >右键单击实例 – >获取系统日志)。 我曾经有过EC2实例上的networking服务无法正确启动的情况,导致SSH连接超时; 重新启动实例通常会修复一些事情。

以下是可能的问题:

  • 最有可能的是安全组configuration不正确,以提供端口22上的SSH访问您的IP更改安全设置不需要重新启动服务器,因为它是有效的,但需要等待几分钟它是适用。

  • 本地防火墙configuration不允许SSH访问服务器。 (你可以尝试不同的networking连接,你的手机/encryption狗试试)

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

在这里输入图像说明

2小时后,我发现了这个

注意ssh ip 120.138.105.251/32

  • 不是aws实例IP地址

  • 这不是你的本地ip 127.0.0.1

  • 这不是你的本地IP localhost

但是但是

它是您的个人计算机的公共IP地址,您尝试访问aws实例

  1. https://www.whatismyip.com/任何IP地址放在;SSH中

如果你想完全打开SSH到所有的IP地址 在这里输入图像说明

这是如何完全可访问的条目看起来基本的结果 在这里输入图像说明

这就是我在生产中使用的东西 在这里输入图像说明

还有一种可能性 AWS安全组设置为仅与特定的传入IP地址一起工作。 如果您的安全组以这种方式设置,您(或账户持有人)将需要将您的IP地址添加到安全组。 这会打开您的AWS仪表板,select安全组,select一个安全组,然后单击入站选项卡。 然后根据需要添加您的IP。

我遇到了同样的问题,解决scheme是允许从任何地方访问活动安全组中的入站规则列表。 在入站对话框中,在源字段的任意位置的端口范围内input22,然后在下拉列表中select“ssh”。

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

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

如果SSH访问不适用于您的EC2实例,则需要检查:

  • 您的实例的安全组 允许入站 SSH访问 (检查: 查看规则 )。

如果您使用VPC实例(您的VPC ID子网ID附加到您的实例),请检查:

  1. 在VPC仪表板中,find连接到您的VPC的已使用的子网ID。
  2. 检查其附加的路由表 ,它应该有0.0.0.0/0作为目的地,您的Internet网关作为目标。

在Linux上,你也可以在实例的系统日志 networking中检查路由信息,例如:

 ++++++++++++++++++++++++++++++++++++++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标志显示您的互联网网关。

有关更多详细信息,请查看:在Amazon文档中疑难解答连接到您的实例 。

查看AWS文档上的帮助页面:

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectionTimeout您可能会在此处find您的解决scheme。; 对我来说这个部分做了修复:

[EC2-VPC]检查子网的路由表。 您需要一条路由,将VPC以外的所有stream量发送到VPC的Internet网关。

  • 通过以下url打开Amazon VPC控制台: https://console.aws.amazon.com/vpc/ 。

  • 在导航窗格中,selectInternet网关。 确认有一个Internet网关连接到您的VPC。 否则,请select创buildInternet网关,然后按照说明创buildInternet网关,selectInternet网关,然后select连接到VPC,然后按照说明将其连接到VPC。

  • 在导航窗格中,select“子网”,然后select您的子网。

  • 在“路由表”选项卡上,validation是否存在以0.0.0.0/0为目标的路由,并将VPC的Internet网关作为目标。 否则,select路由表的ID(rtb-xxxxxxxx)导航至路由表的路由选项卡,select编辑,添加其他路由,在目的地input0.0.0.0/0,从目标select您的Internet网关,然后select保存。

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

我的问题 – 我有端口22打开“我的IP”,并改变了因特网连接和IP地址的变化。 所以不得不改回来。

要从Internet上启用对VPC子网中的实例的ssh访问,请执行以下操作:

  • 将Internet网关连接到您的VPC。
  • 确保您的子网的路由表指向Internet网关。
  • 确保子网中的实例具有全局唯一的IP地址(公有IPv4地址,弹性IP地址或IPv6地址)。
  • 确保您的networking访问控制(在VPC级别)和安全组规则(在ec2级别)允许相关stream量stream入和stream出您的实例。 确保您的networking公开IP地址已启用两个。 默认情况下,networkingAcL允许所有入站和出站stream量,除非另外明确configuration