无法通过SSH进入AWS CloudFormation堆栈实例


9

我现在设置了一个可伸缩的负载平衡器,此模板通常遵循以下步骤:

https://github.com/satterly/AWSCloudFormation-samples/blob/master/LAMP_Multi_AZ.template

AWS::AutoScaling::AutoScalingGroup.CreationPolicy.ResourceSignal.Count密钥调整为0(基本上允许在没有收到成功信号的情况下加载堆栈)之后,我就能够加载堆栈,并且可以看到所有可用资源。

我可以看到正在创建的密钥的公共DNS,但是无法通过SSH进入实例。

我在实例规则中对所有人开放了SSH访问权限,可以在AWS控制台中确认这一点。

我还根据官方AWS文档中的建议为我的VPC配置了一条路由:https : //aws.amazon.com/premiumsupport/knowledge-center/ec2-linux-ssh-troubleshooting/

我可以看到实例存在,但是似乎我在某些地方限制了自己的访问。但是,在AWS EC2控制台中,设置看起来与我可以SSH进入实例的外观相同。

这是我使用的JSON模板,您可以在其中查看所有设置,包括我的VPC,子网,安全组等:https : //gist.github.com/dambrogia/e4cd93a64ae6f3a79d4a58d466f144f8

我从以下命令收到超时错误:(我的id_rsa密钥在ec2中有效)

ssh -i ~/.ssh/id_rsa ec2-user@<ec2_instance>

如何通过SSH进入实例?先谢谢您的帮助!


2
包括您的实际CFN模板表示赞许!它确实有帮助:)
MLu

Answers:


11

问题在于,CloudFormation模板会RouteTable使用默认路由0.0.0.0/0创建一个正确指向IGW的默认路由,但是您不会将其RouteTable与子网关联。

在此处输入图片说明

您需要做的是将这两个路由表关联添加到模板中:

        "Subnet1RT":{
            "Type" : "AWS::EC2::SubnetRouteTableAssociation",
                "Properties" : {
                    "RouteTableId" : { "Ref": "RouteTable" },
                    "SubnetId" : { "Ref": "Subnet1" }
                }
        },
        "Subnet2RT":{
            "Type" : "AWS::EC2::SubnetRouteTableAssociation",
                "Properties" : {
                    "RouteTableId" : { "Ref": "RouteTable" },
                    "SubnetId" : { "Ref": "Subnet2" }
                }
        },

然后更新堆栈 ...

在此处输入图片说明

并重新检查路由表

在此处输入图片说明

现在,您应该可以通过SSH连接到实例了:

~ $ ssh 54.209.123.119
Last login: Thu Nov  1 18:54:54 2018 from ...

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
[ec2-user@ip-10-0-2-229 ~]$ 

希望有帮助:)


谢谢你这么多的深入回答和解释。它就像一个魅力!
domdambrogia '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.