连接到 OS X 上的 EC2 实例的 ssh 超时问题

连接到 OS X 上的 EC2 实例的 ssh 超时问题

我是 AWS 的新手,并不是网络专家,但我很想了解更多信息。

我创建了一个仅具有公共子网的 VPC。然后我使用 Ubuntu 14.04 64 位 pv AMI 映像 (ami-e84d8480) 创建了一个 EC2 实例,并生成了通过 ssh 连接到该实例所需的密钥对。

我按照亚马逊的指示通过 ssh 连接到 EC2 实例,但没有成功。

这是我尝试的输入和调试日志:

在 OS X 10.9.4 上运行

user$ ssh -vvv -i key.pem [email protected]
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 102: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to xxx.xxx.xxx.xxx [xxx.xxx.xxx.xxx] port 22.
debug1: connect to address xxx.xxx.xxx.xxx port 22: Operation timed out
ssh: connect to host xxx.xxx.xxx.xxx port 22: Operation timed out

尝试解决该问题:

  1. 我启用了 SSH 端口。
  2. 尝试了除 ubuntu 之外的其他用户名,例如 ec2-user 和 root。
  3. 最初在安全组中设置入站 ssh 规则以仅连接到我的 ip 地址。当这不起作用时,我将其更改为允许任何 ip 连接。

但这些措施并未解决问题。

以下是我对使 EC2 实例连接正常工作所缺少的内容的猜测。

  1. 我的 etc/ssh_config 文件可能阻止了连接的建立。
  2. 在设置 VPC 时我可能错过了一个重要的网络细节。
  3. 我没有为实例指定公共 IP 地址。我正在通过私有 IP 地址进行连接。

我对社区的问题是:

  1. 我通过私有 IP 地址连接实例的方式是否错误?如果是这样,我是否需要指定一个公共 IP 地址来连接它或使用其他方法?

答案1

更仔细地阅读了 VPC 文档后,我的第一个 EC2 实例已连接。

这是我在设置 EC2 实例和 VPC 时遇到的错误。

如果只有私有 IP,我的开发机器将永远无法连接到 EC2 实例,除非它是 VPC 网络的一部分。因此,为了从外部与它通信,我需要指定为每个创建的实例分配一个关联的公共 IP 地址。

以下是修复方法:

  1. 如果我错了,请纠正我,但看起来 EC2 浏览器控制台中没有选项可以为已创建的实例分配公共 IP 地址,所以我最终将其删除了。

  2. 我想返回 VPC 控制台,然后转到子网选项。然后,我选择了最初在 VPC 向导中创建的公共子网,并在“修改自动分配公共 IP”选项中指定该子网,以便为每个新创建的 EC2 实例启用公共 IP 地址的自动分配。

  3. 创建一个新的EC2实例,并分配一个新的公网IP地址。

  4. 按照亚马逊的 ssh 指示,通信已成功启动。

答案2

有可能,在创建实例时,您可以创建亚马逊所谓的“弹性 IP”,而不是使用设置公共 IP 地址的选项,它非常类似于您手动与 EC2 实例关联的公共 IP 地址。

它的不同之处在于,就像 EC2 中的其他一切一样,它是一种“模块化”的东西。你可以将它与一个盒子关联,然后稍后将其交换到另一个盒子。此外,它会在你拥有的任何特定 EC2 实例的生命周期之外持续存在,而我怀疑,如果你关闭实例,你在创建时分配的公共 IP 地址就会消失。

如果您选择使用弹性 IP,定价可能会有所不同,请参阅 亚马逊的定价页面

我发现设置一个并将其用作 DNS 记录 IP 比使用亚马逊分配的公共 IP 效果更好。

相关内容