【问题标题】:cannot ssh vanilla aws instance无法 ssh vanilla aws 实例
【发布时间】:2020-12-27 08:02:25
【问题描述】:

我整个晚上都在这上面度过。猜猜这只是我错过了一个愚蠢的步骤。这是我遵循的程序:

  1. 创建一个 aws vpc 10.0.0.0/24;
  2. 创建一个 aws 互联网网关并将其与 VPC 关联;
  3. 在 VPC 10.0.0.0/26 中创建子网;
  4. 向 VPC ACL 添加入站规则以允许来自所有 IPV4 源的 SSH、HTTP、HTTPS;
  5. 在区域 us-west-2、t2.micro 中使用 Amazon Linux 2 AMI 启动 aws ec2 实例, 实例详情: 实例数:1 网络:上面创建的 VPC 子网:上面创建的子网 自动分配公共 IP:使用子网设置(禁用) 容量预留:开放 其他一切默认 存储细节 添加数据量,在终止检查时删除 安全组:为所有 ipv4 源打开入站规则 ssh/http/https 的新安全组 使用我之前创建的现有密钥对;
  6. 创建弹性IP;
  7. 将弹性 IP 关联到上面创建的实例。
  8. 重启实例

然后我可以看到实例在附加弹性 IP 的情况下运行良好。 我尝试使用 ssh ssh -vvv -i ./aws_private.pem ec2-user@ipaddress 连接到 IP 地址,但失败了

OpenSSH_8.1p1, LibreSSL 2.7.3
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 47: Applying options for *
debug2: resolve_canonicalize: hostname <elastic ipaddress> is address
debug2: ssh_connect_direct
debug1: Connecting to <elastic ipaddress> [<elastic ipaddress>] port 22.
debug1: connect to address <elastic ipaddress> port 22: Operation timed out
ssh: connect to host <elastic ipaddress> port 22: Operation timed out

我验证了 ACL 和安全组。这些是我唯一的 ACL 和安全组。 我正在使用 Mac。并且还尝试在同一区域使用 Windows 操作系统和 aws cloud shell。他们都有相同的错误。 telnet &lt;elastic ip&gt; 22 也失败了。 我做错了什么?

【问题讨论】:

  • 如果你也不能telnet端口22,请检查目标计算机是否允许通过端口22入站连接(检查其防火墙)
  • 到互联网网关的路由表怎么样?
  • @KenLee,您是指计算机防火墙还是 VPC ACL 或安全组?如果是计算机防火墙,我无法登录该虚拟机,也无法检查它。如果它是 VPC ACL,正如我所提到的,它已经被允许了。如果是安全组,就已经被允许了。
  • @Marcin,这很好。我忘记在上述步骤中更新路由表。实际上,我在路由表中附加了两条规则:destination 10.0.0.0/24,target local;目标 0.0.0.0/0,目标 Internet 网关。问题依然存在。
  • 您可以将 NACL 恢复到其默认状态吗?否则,您必须准确显示您是如何修改它们的。

标签: amazon-web-services ssh


【解决方案1】:

你忘了一件事。

Security Groups

您需要允许 SSH 连接到您的实例端口 22。为此,请将以下规则添加到您的 Ec2 实例的安全组。

Protocol - TCP, type- SSH , port -22, source - 0.0.0.0/0 

实际上,您不需要编辑 ACL,因为默认情况下允许访问所有内容。

但您需要将规则添加到安全组,默认情况下它不允许任何连接

【讨论】:

  • 我一开始就这样做了:new security group with inbound rules ssh/http/https opened for all ipv4 sources
【解决方案2】:

一般来说,除非您有非常具体的要求(例如创建 DMZ),否则不应更改默认的 NACL 规则。

NACL 是无状态的,这意味着它们需要在两个方向上指定。我建议您将入站和出站的 NACL 重置为其默认设置“全部允许”,然后仅使用安全组来控制访问。

连接的流程是:

  • 弹性 IP 地址指向 Internet 网关
  • 互联网网关执行反向 NAT 将其转换为私有 IP 地址
  • 查询子网上的路由表以确认子网是“公共的”(指向 Internet 网关的路由表条目)
  • NACL 检查进入子网的流量(建议将其保留为默认 Allow All)
  • 安全组检查进入实例的流量
  • 实例处理传入请求

【讨论】:

  • 当我回到这个问题时,我没有做任何改变。问题神奇地消失了。我可以 ssh ec2 实例。然后我想听从你的建议。我将“所有流量”添加回 ACL 入站,并从 ACL 中删除了 SSH/HTTP/HTTPS。当我将更改保存到 ACL 时,我失去了 ssh 连接,并且不再能够重新连接。我重新启动了实例,无法重新连接;我将 SSH/HTTP/HTTPS 添加回 ACL,也无法重新连接。唯一的好消息是 EC2 Instance Connect 仍在工作。
  • 我切换到我的 Windows 笔记本电脑,它连接到实例没有任何问题。我重新启动了我的 MAC,但问题仍然存在于我的 MAC 上。这很奇怪。
【解决方案3】:

原来是我 Mac 上的 zscaler 以某种方式改变了我的 ip 地址并扰乱了我的 Mac 和 aws 之间的通信。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-29
    • 2021-08-25
    • 1970-01-01
    • 2020-08-07
    • 2013-01-06
    • 2019-08-08
    • 2021-06-02
    • 1970-01-01
    相关资源
    最近更新 更多