EC2安全组无法连接到我的IP

4

看起来像是一个基本的工作,但不知道为什么对我没用。我希望只能从我的办公室IP访问我的EC2实例。

我进入了我的安全组并添加了一个SSH规则,只允许我的IP作为源地址,就像这样 -

enter image description here

但是这对我来说似乎没有起作用,当我尝试通过WinSCP或使用终端连接时,我收到了拒绝连接的错误信息。

如果我将源地址更改为“所有地方”(0.0.0.0/0),一切都可以正常工作。

请问有没有人能给我指点一下呢?


我确定你已经涵盖了这一点,但请确保安全组控制台使用的“我的IP”选项的IP地址是正确的。如果你能够将源设置为0.0.0.0/0并且无法在将其设置为你的IP地址时进行SSH连接,那么很有可能IP地址是错误的。尝试访问www.whatismyip.com? - Brooks
是的,我已经测试了几次了。 - nasaa
你有检查安全日志中与启用了从任何地方访问的ssh登录相关联的IP地址吗?可能是HTTP流量通过某个代理路由。 - Kazaag
抱歉,我已经没有更多的想法了,因为那是一个非常基本的功能。尝试给AWS支持发送电子邮件?即使在免费层级下,他们也应该支持这样的功能。 - Brooks
3个回答

16

使用可行的方法登录EC2,然后发出以下命令:

who am i

它会显示类似以下内容:

ec2-user      pts/0        2016-02-29 15:06 (104.66.242.192)

请使用安全组规则中显示给你的IP地址(不是上面那个)


1
很多时候,它们会被路由和NAT改变。最好的做法是找出AWS最终看到的内容。 - Vorsprung
1
另一种不需要开放到0.0.0.0/0的路线是在VPC中设置Flow Logs,尝试连接失败,然后检查Flow Logs以查看被拒绝的IP地址。我的公司标记源IP为0.0.0.0/0的安全组,因此如果任何人有类似的安全限制,则应使用Flow Logs。 - Adam
我是谁命令是完美的解决方案。 在我的情况下,安全组已经正确配置,但是我忘记将正确的路由表与子网关联起来,这就是为什么我无法从Ec2实例获取响应返回到我的主机的原因。 - RKA

2

虽然 "who am i" 可以正常工作,但我想再添加两个解决方案。这两个解决方案都非常简单。

解决方案 1:

步骤 1:暂时为所有 IP(0.0.0.0/0)打开安全组。

步骤 2:建立与服务器的 SSH 连接。

步骤 3:运行 "w" 命令并检查 FROM 列中的输出。

ubuntu@ip-172-31-39-228:~$ w
 23:20:09 up 5 min,  1 user,  load average: 0.08, 0.08, 0.04
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
ubuntu   pts/0    52.95.75.17      23:20    0.00s  0.01s  0.00s w

步骤4:将此IP在安全组中替换为0.0.0.0/0(例如52.95.75.17/32)。

解决方案2:

步骤1:暂时为所有IP(0.0.0.0/0)打开安全组。

步骤2:建立与服务器的ssh连接。

步骤3:检查欢迎消息中的最后登录信息。 例如:

Learn more about enabling ESM Apps service at https://ubuntu.com/esm


Last login: Thu Feb  9 23:21:42 2023 from 52.95.75.17
ubuntu@ip-172-31-39-228:~$
ubuntu@ip-172-31-39-228:~$

第四步(可选):如果欢迎消息中没有 IP 地址,则运行“last”命令。
ubuntu@ip-172-31-39-228:~$
ubuntu@ip-172-31-39-228:~$ last
ubuntu   pts/2        52.95.75.17      Thu Feb  9 23:33   still logged in
ubuntu   pts/1        52.95.75.17      Thu Feb  9 23:21   still logged in

步骤5:将此IP在安全组中替换为0.0.0.0/0(例如52.95.75.17/32)。

请参考以下解决方案的截图: enter image description here


-1

欢迎提供解决方案的链接,但请确保您的回答在没有链接的情况下也是有用的:在链接周围添加一些上下文,以便其他用户了解它的内容和存在的原因,然后引用您所链接页面中最相关的部分,以防目标页面无法访问。仅仅提供链接的回答可能会被删除。 - Steve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接