【问题标题】:Not able to ssh/http into EC2 instance无法 ssh/http 进入 EC2 实例
【发布时间】:2021-01-14 08:15:50
【问题描述】:

我对此束手无策,请帮忙。

我正在我的默认公共 VPC 中创建 EC2 实例,但我无法通过 ssh 或 http 连接到我的实例或运行到机器中的 Web 服务器。我检查了以下内容

  • SG 允许来自 0.0.0.0/0 的入站 SSH、HTTP 和 HTTPS 并分配给我的实例
  • 默认 VPC,具有指向 IGW 的 0.0.0.0/0 路由表
  • NACL 配置为允许所有流量。我还手动更新为仅允许 HHTP、HTTPS 和 SSH
  • 已通过运行 chmod 400 文件名 授予了使用密钥的正确权限

尽管所有这些都无法连接到 EC2 实例,AMI 是 Amazon Linux 2 AMI

当我尝试 ssh 时,我在一段时间后收到连接超时错误,最初,我以为这是我的办公室网络,但我也从没有防火墙的家庭网络得到同样的错误

【问题讨论】:

  • 您的 SG 出口是否允许传出连接?
  • 是的,最初它允许所有流量到 0.0.0.0/0 现在我也更新到 SSH、HTTP 和 HTTPS 只是为了检查并且同样的问题仍然存在。用 iamges 更新
  • 请您分享您尝试用于连接的命令吗?
  • 你能远程登录到端口 吗?你可以分享 ssh 详细日志吗?您分享的安全图片中配置了 6 条出站规则。您可以检查一下吗?
  • 出站 NACL 规则是什么?通常您将 NACL 保留在默认状态,而不对其进行修改。

标签: amazon-web-services amazon-ec2 ssh aws-security-group


【解决方案1】:

要允许 SSH 连接,您需要:

  • 运行 Linux 的 Amazon EC2 实例在 公共子网 中启动(定义为具有将 0.0.0.0/0 定向到 Internet 网关的路由表)
  • 安全组允许在端口 22 上进行入站访问(与出站配置无关)
  • 网络 ACL 保留默认设置,即在双向上全部允许
  • 与实例关联的公共 IP 地址

根据您的描述,我认为问题可能出在 出站 NACL 上。来自 SSH 会话的返回流量会返回到发起服务器上的源端口,不是端口 22。通常,只有在您有特定原因(例如创建 DMZ)时才更改 NACL。我建议您将 NACL 规则重置为允许双向的所有流量。

【讨论】:

  • 感谢@John,一旦我恢复到默认的 NACL 设置,即允许来自 0.0.0.0/0 的所有流量,我就能够通过 ssh 进入实例。我不知道为什么只允许 ssh、http、https 不应该这样做,但是直到调用者的 ssh 端口可能不同于 22,这是有道理的。感谢您的帮助
  • 正确。建立 SSH 连接时,流量会端口 22,但它来自不同的端口。这就是一台计算机可以建立多个 SSH 连接的方式——每个连接来自不同的源端口(返回流量被发送到该端口),流量不会混合在一起。