2

启动一个 AWS EC2 实例似乎很简单,尽管在连接到新启动的实例时事情变得棘手。连接到这样一家科技巨头提出的实例的过程非常违反直觉。

作为一个简短的提醒,我应该补充一点,从技术上讲,“实例”是在亚马逊的 Elastic Compute Cloud (EC2) 上运行的虚拟机,有关更多信息,可以查看此链接

本讨论中提到的 ec2 实例是 Ubuntu Server 20.04 LTS (HVM)。此处提供了使用 EC2 Linux 实例的说明。

AWS EC2 提出了三种不同的实例连接方式:

  1. EC2 实例连接(基于浏览器的 SSH 连接),
  2. 会话管理器
  3. SSH 客户端

现在关于连接到上述实例,只有某些连接正确建立,其余建议的方法都失败了,这里是连接成功和失败的列表:

  1. Ubuntu 实例,安全组源“Custom=0.0.0.0/0”,使用 EC2 Instance Connect(基于浏览器的 SSH 连接)和 SSH 客户端建立连接。
  2. Ubuntu 实例,安全组源“My IP=$IP”,仅使用 SSH 客户端(Ubuntu 上的终端和 Windows 上的 PuTTY)建立连接,而不使用 EC2 实例连接。

上述两种情况都已在 Ubuntu 20.04 和 Windows 10 作为本地机器上进行过尝试,两台机器上的问题仍然相似。我浏览了此处提出的故障排除文档中讨论的大多数故障案例,并在我的实例上对其进行了验证。然而问题依然存在。我还应该补充一点,我从未尝试过“会话管理器”连接方法,尽管打开它的选项卡已经会提供一些关于“未安装”代理和功能的信息。

关于这个问题的任何想法?有人遇到同样的问题吗?

4

1 回答 1

2

来自文档

(Amazon EC2 控制台基于浏览器的客户端)我们建议您的实例允许来自为服务发布的推荐 IP 块的入站 SSH 流量。

原因-> EC2 Instance Connect 通过在您的 Web 浏览器和 aws 上的后端 EC2 Instance Connect 服务之间建立 HTTPS 连接来工作。然后,EC2 Instance Connect 与目标实例建立“大部分正常”的 SSH 连接,换句话说,请求来自后端 ec2 实例连接,而不是您的浏览器,这就是它需要来自该区域接受范围的 IP 地址的原因。

基于浏览器的EC2 Instance Connect 使用特定的 IP 范围与您的实例进行基于浏览器的 SSH 连接。这些 IP 范围因 AWS 区域而异。要查找特定区域中 EC2 Instance Connect 的 AWS IP 地址范围,请使用以下内容(只需将您的区域替换为您的区域)(对于 Linux,需要 curl 和 jq 作为先决条件)

 curl -s https://ip-ranges.amazonaws.com/ip-ranges.json| jq -r '.prefixes[] | select(.region=="Your region") | select(.service=="EC2_INSTANCE_CONNECT") | .ip_prefix'

无论返回什么值,只要加到您的安全规则中,它就会起作用。

Ubuntu 实例,安全组源“Custom=0.0.0.0/0”,使用 EC2 Instance Connect(基于浏览器的 SSH 连接)和 SSH 客户端建立连接。

这是有效的,因为 0.0.0.0/0 允许来自所有 IP 范围的连接(也包括您的区域 IP)。有关更多详细信息,请尝试阅读此疑难解答

于 2021-06-06T19:07:12.853 回答