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

我是AWS的新手,而不是networking专家,但很想知道更多。

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

我遵循亚马逊的指示,通过ssh连接到一个EC2实例,没有工作。

这是我尝试的input和debugging日志:

在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连接。

但是这些行动并没有解决问题。

这里是我的猜测,让我缺less让EC2实例连接工作。

  1. 我的etc / ssh_config文件可能会阻止连接发生。
  2. 在设置VPC时,我可能错过了一个重要的networking细节。
  3. 我没有为该实例指定的公共IP地址。 我通过私人IP地址连接。

我对社区的问题:

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

在仔细阅读VPC文档之后,我的第一个EC2实例已经连接。

这是我设置EC2实例和VPC时出错的地方。

只有私有IP,我的开发机器将永远不能连接到EC2实例,除非它是VPCnetworking的一部分。 所以为了从外部与之交谈,我需要指定为每个创build的实例分配一个关联的公有IP地址。

这是什么修复它:

  1. 纠正我,如果我错了,但它看起来像在EC2浏览器控制台中没有一个选项分配一个公共IP地址的已经创build的实例,所以我结束了删除它。

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

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

  4. 跟随亚马逊的ssh和沟通的方向已经成功启动。

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

使它不同的东西就像EC2中的其他东西一样,是“模块化”的。 您可以将其与一个框相关联,然后再将其交换到另一个框。 此外,它持续超出任何特定的EC2实例的生命,而我怀疑在创build时分配的公有IP地址会在您closures实例时消失。

如果您select使用Elastic IP,定价有一些潜在的差异,请参阅Amazon的定价页面 。

我发现将其设置为DNSloggingIP比使用Amazon分配的公有IP更好。