SSH 到 Amazon EC2 实例时连接超时

SSH 到 Amazon EC2 实例时连接超时

从几天前开始,我们的其中一个 EC2 实例就出现连接超时的情况。

我之前能够连接到 SSH,但突然它停止工作了。服务器仍在运行,HTTPS 工作正常,我可以通过浏览器访问服务,但无法使用 SSH。

以下是我迄今为止尝试过的步骤:

  • 使用密钥对从 PAC(Linux SSH 客户端)进行 SSH:超时。之前可以正常工作,连接没有变化
  • 使用公共主机从另一个 EC2 实例进行 SSH。获取超时
  • 使用私有 IP 从另一个 EC2 实例进行 SSH。获取超时
  • 然后我停止/启动了该实例,获取了一个新的 IP,更改了路由 53 中的信息,站点恢复运行,但使用上述步骤的 SSH 仍然不起作用。
  • 我检查了安全组(以防万一它以某种方式发生变化),端口 22 被允许入站。另一个运行良好的实例使用了相同的安全组。
  • 我还把我的 IP 添加到组中以防万一,但仍然不起作用。我在同一个可用区中有 4 个实例,但有问题的实例具有不同的 IP 范围(之前也不同)有问题的公共 IP 以 35.182 开头。其他 3 个正常工作的实例公共 IP 以 99.79 开头。

我按照以下链接中的故障排除步骤进行操作:https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html

连接到您的实例时出错:连接超时

  1. 检查您的安全组规则。您需要一个安全组规则,允许来自您的公共 IPv4 地址的正确端口上的入站流量。如上所述,附加的安全组已允许端口 22 入站
  2. 检查子网的路由表。您需要一条路由,将所有发往 VPC 外部的流量发送到 VPC 的互联网网关。有一个互联网网关连接到我的 VPC(与我的其他实例相同的 VPC)
  3. 检查子网的网络访问控制列表 (ACL)。网络 ACL 必须允许来自本地 IP 地址的正确端口上的入站和出站流量。默认网络 ACL 允许所有入站和出站流量。检查并使用默认设置,0.0.0.0/0 的所有流量和端口均被允许
  4. 如果您的计算机位于公司网络中,请询问您的网络管理员内部防火墙是否允许从您的计算机通过端口 22(对于 Linux 实例)或端口 3389(对于 Windows 实例)进行入站和出站流量。如果您的计算机上有防火墙,请验证它是否允许从您的计算机通过端口 22(对于 Linux 实例)或端口 3389(对于 Windows 实例)进行入站和出站流量。我可以连接到其他实例,但这不相关。
  5. 检查您的实例是否具有公共 IPv4 地址。如果没有,您可以将弹性 IP 地址与您的实例关联。有关更多信息,请参阅弹性 IP 地址。该实例包含一个公共 ipv4 地址,还有一个公共 DNS,这是我可以看到此实例与其他实例之间的区别的地方,这个特定实例是唯一一个具有以 35.182 开头的公共 IP 的实例。而其他实例都以 99.79 开头。这以前不是问题,因为 IP 也不同,这是否以某种方式相关?
  6. 检查实例上的 CPU 负载。CPU 负载和其他一切都正常,没有维持峰值。

以下是我做过的一些事情:

  • 通过端口 22 进行 telnet 连接到正在运行的实例,没有任何问题,但是通过 telnet 连接到有问题的实例却不起作用,它只是挂起了。
  • iptables 没有被修改(据我所知,我是唯一一个可以连接到实例的人,但我没有这样做)
  • 检查密钥对所有者和文件权限是否达到预期值
  • 尝试使用终端而不是客户端进行 SSH,结果相同
  • 检查了系统日志(可以通过 EC2 仪表板获取),没有错误,系统启动正常,apache2 正在运行并且站点可以访问。

服务器正在运行 ubuntu 18.04,我们已完成更新和默认升级。

我不确定我还能做什么,但如果有人有任何建议或需要更多信息,我会很乐意提供。

谢谢。

答案1

检查是否通过 AWS 防火墙和计算机上的 iptables 允许端口 22 上的出站连接。您可以使用 检查所有 iptables 规则iptables -nvL

确保 iptables 中的输出链设置为 ALLOW 而不是 DROP,或者确保配置了允许输出链的新建、已建立和相关连接的适当规则。

或者,执行netstat -npl并检查 SSH 究竟在监听什么。如果您已将其绑定到此后已更改的非弹性 IP 地址,则会出现问题。

编辑:由于您提到您无权通过 SSH 发出命令,因此您可以使用 AWS 控制台发出这些命令并观察其输出:

https://docs.aws.amazon.com/systems-manager/latest/userguide/rc-console.html

相关内容