为什么我无法通过SSH生成从我生成的AMI创build的新EC2实例?

我遵循创buildAmazon EBS支持的Linux AMI的过程 ,但是我没有closures原始实例,只是让AWS重新启动它。

当我启动并启动一个新实例时,我始终无法通过SSH(或任何方法)连接。 即使重新启动后,我也可以连接到原始实例,而不会出现任何问题。

新实例位于相同的可用区中,在同一个安全组中,并且与原始实例具有相同的密钥对。

我不认为这很重要,但最初的实例是一个m1.medium ,我试图启动一个m1.small

我能够解决这个问题,这是两件事情:

  1. 我已经从/root/.ssh/authorized_keys删除了ec2-user密钥,我认为这阻止了AWS进程完成初始化过程。
  2. NFS服务似乎挂在启动。

当我把ec2-user信息放回去,然后将NFS设置为在启动时不启动时,我能够成功启动并login到一个新的实例。

在Amazon Web Services中仔细检查您的实例的以下设置:

  • 您的实例的安全组 允许入站 SSH访问 (检查: 查看规则 )。
  • 对于VPC实例, 请检查其附加的路由表 ,其中应该有0.0.0.0/0作为目标,您的Internet网关作为目标。
  • 请仔细检查实例的系统login networking中的路由信息​​。

有关更多详细信息,请检查: 连接到您的实例的疑难解答

我的问题是我在Amazon Linux AMI上使用用户ubuntu而不是ec2-user 。 可能会帮助未来的谷歌。

我已经通过创build一个不同的用户帐户解决了这个问题,把~/.ssh/authorized-keys放在用户的HOME目录的~/.ssh/authorized-keys中,然后给这个用户sudo权限。

一旦你这样做,使AMI。 然后,您可以使用给定的公钥始终以该用户身份login到该AMI,无论您是否提供EC2密钥对。