创建了一个 AWS AMI 实例。
我可以从实例本身
telnet [Pv4 公共 IP] 9200
但不是来自我的电脑。
我究竟做错了什么?
您可以检查您的网络 ACL 配置。您的 PC 和服务器之间似乎有其他防火墙阻止您访问 9200。
你可以看看这个telnet-to a cloud instance from outside
问题的解决方案是“打开服务并制作 telnet 手册并右键单击它并选择开始”
还要确保实例驻留在公共 VPC 中
根据您所描述的,没有太多其他工作可以使用。您从实例远程登录公共 IP 的能力意味着服务器正在侦听外部接口,并且您的安全组已设置为使端口对所有传入连接开放。
除了忽略实际上没有在列出的安全组下的实例之外,我现在能想到的唯一可能性是实例上的活动防火墙。在iptablesor的情况下ufw(它是 iptables 的接口),验证它们是否确实妨碍了它是微不足道的:
// List iptables access rules
sudo iptables -L -v
// List access rules via ufw
sudo ufw status
您可能正在运行您的接受器进程,127.0.0.1:9000这意味着只有本地客户端可以连接。这与您的安全组无关,它可能是开放的。
lsof -i:9000如果在 unix 上运行。
如果您在下面看到类似的内容,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)
你说:“这是我的 SG”,但是……哪个方向?入境还是出境?可能只是您的主机无法回复您的 PC。尝试添加一条规则,添加从端口 32768 到 65535(临时端口)的出站TCP,以便 telnet 服务器响应数据包可以返回您的 PC。
否则,就像其他人所说的那样,看看上一层,VPC 级(网络 ACL)。
默认情况下,不会在 Amazon Linux AMI 上安装 Telnet 服务。
如果您想使用它,您需要自己安装它,例如:在 EC2 Amazon Linux 或 CentOS 上安装和设置 Telnet。
但是,这些天建议使用ssh,而不是telnet因为它更安全。参见:维基百科上的 Telnet
只是一个想法,检查你的电脑的防火墙。
需要确保将您通过 IAM 生成并在启动时附加到 EC2 的 SSH 密钥添加到登录中:
ssh-add -K <yourkeyname>.pem
ssh ubuntu@<yourdns or ip>.com == or == ssh ec2-user@<yourdns or ip>