启动AWS EC2实例似乎很简单,尽管当连接到新启动的实例时,事情会变得棘手。这样一家科技巨头提出的连接实例的过程非常违背直觉。
作为一个简短的提醒;实例";从技术上讲,它是一台运行在亚马逊弹性计算云(EC2(上的虚拟机,有关更多信息,请查看此链接。
本文中提到的ec2实例是Ubuntu Server 20.04 LTS(HVM(。这里给出了使用EC2Linux实例的说明。
AWS EC2提出了三种不同的连接实例的方式:
- EC2实例连接(基于浏览器的SSH连接(
- 会话管理器
- SSH客户端
现在,关于连接到上述实例,只有某些连接正确建立,而其他建议的方法都失败了,以下是连接成功和失败的列表:
- Ubuntu实例,安全组源"Custom=0.0.0.0/0";,使用EC2实例连接(基于浏览器的SSH连接(和SSH客户端建立连接
- Ubuntu实例,安全组源";My IP=$IP";,连接仅使用SSH客户端(Ubuntu上的终端和windows上的PuTTY(建立,而不使用EC2实例连接
以上两种情况都在作为本地机器的Ubuntu 20.04和Windows 10上进行了尝试,但这两台机器上的问题仍然相似。我浏览了这里提出的故障排除文档中讨论的大多数故障案例,并在我的实例中进行了验证。然而,问题依然存在。我还应该补充一点,我从未尝试过";会话管理器";连接方法,尽管打开它的标签已经会给出一些关于"连接"的信息;未安装";代理和功能。
关于这个问题有什么想法吗?有人面临同样的问题吗?
来自文档
(基于亚马逊EC2控制台浏览器的客户端(我们建议您的实例允许来自为服务发布的推荐IP块的入站SSH流量。
原因->EC2实例连接通过在您的web浏览器和aws上的后端EC2实例连接服务之间建立HTTPS连接来工作。然后EC2实例连接建立一个";大部分正常";到目标实例的SSH连接,换句话说,请求来自后端ec2实例连接,而不是您的浏览器,这就是为什么它需要该区域可接受范围内的IP地址。
基于浏览器的EC2实例连接使用特定的IP范围进行基于浏览器的SSH连接。这些IP范围因AWS地区而异。要在特定区域中查找EC2实例连接的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实例连接(基于浏览器的SSH连接(和SSH客户端建立连接。
这是因为0.0.0.0/0允许从所有IP范围(也包括您所在地区的IP(进行连接。有关更多详细信息,请尝试阅读此故障排除