为什么我无法通过Telnet连接我的AWS实例?

10

创建了一个AWS AMI实例。
我可以从实例本身使用telnet命令
telnet [Pv4公共IP] 9200

但是我无法从我的电脑上使用telnet命令。

这是我的安全组 enter image description here

我做错了什么?


3
你能否从实例(本地计算机)外部 telnet 到其他端口,例如 80 或 22? - Bruno Rubin
9个回答

2
你可以检查你的网络ACL配置。 看起来你的电脑和服务器之间还有其他防火墙,它在9200端口上阻止了你的访问。

2
如果您可以通过telnet访问端口80,或者能够通过SSH登录,则可能已经设置了网络ACL。如果您无法通过telnet访问端口80,但可以通过浏览器访问,则可能是本地配置问题,例如杀毒软件或防火墙。
EC2实例使用安全组作为防火墙
另一个缩小问题范围的测试是,查看是否可以从同一AZ中相同子网中的其他实例进行telnet。在同一子网中,您不应受到网络ACL的影响。

1
你可以查看这个从外部telnet到云实例 问题的解决方案是“打开服务并使telnet手动,右键单击它并选择启动”
同时确保实例驻留在公共VPC中

1

根据您所描述的,实际上没有太多其他可用的信息。从该实例中Telnet到公共IP地址的能力表明服务器正在侦听外部接口,并且您的安全组已经设置为对所有传入连接打开该端口。

除了微不足道地忽略了实际上未将该实例放置在所列出的安全组之下,现在我唯一能想到的可能性是实例上有一个活动的防火墙。在iptables或者(作为iptables接口的)ufw的情况下,验证它们是否确实妨碍了进程非常简单:

// List iptables access rules
sudo iptables -L -v

// List access rules via ufw
sudo ufw status

0
你说:“这是我的SG”,但是...是入站还是出站? 可能只是你的主机无法回复你的PC。 尝试添加一个规则,添加出站 TCP 端口范围从32768到65535(临时端口),以便telnet服务器响应数据包可以返回到你的PC。
否则,像其他人所说,看看上一级,VPC级别(网络ACL)。

0

你可能已经在运行 127.0.0.1:9000 上的接收器进程,这意味着只有本地客户端可以连接。这与您的安全组无关,即使它是完全开放的。

如果在Unix上,请运行 lsof -i:9000

如果在 NAME 下看到类似于此的内容,则用于启动接收器的主机IP需要从 127.0.0.1 更改为 0.0.0.0(并通过 SG/FW 进行安全保护)。

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    2777 ubuntu  148u  IPv6  26856      0t0  TCP localhost:afs3-callback (LISTEN)

问题说的是 9000 不是 1234,而且屏幕截图显示它在 0.0.0.0/0 上。 - Quentin
@Quentin 这与 SG 无关,你可以打开 SG,但如果你在实例中打开的 server:port 不是 0.0.0.0,则默认只能进行回环访问。 - JARC

-1

只是一个想法,检查一下你的电脑防火墙。


-1

2
你可以使用telnet来检查端口是否响应。例如,telnet google.com 80 - ceejayoz
1
正确。我有一个运行并监听在9200端口上的服务。 我可以从机器内部使用telnet,但无法从外部连接。 - Bick

-2

需要确保你通过 IAM 生成并在 EC2 实例启动时附加的 SSH 密钥已添加到登录中:

ssh-add -K <yourkeyname>.pem

ssh ubuntu@<yourdns or ip>.com   == or ==  ssh ec2-user@<yourdns or ip>



1
问题说的是 telnet,不是 SSH。 - Quentin
没错,我假设用户不会愚蠢到为了通过 telnet 访问而打开未加密连接的 ACL。这并没有错,因为你可以通过 telnet 会话执行 SSH。问题并没有排除这个选项,也没有明确说“我想通过不安全的连接连接到我的实例”。这里有很多假设。 - Andrew

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