无法通过 SSH 连接到 AWS CloudFormation Stack 实例

dom*_*gia 9 load-balancing amazon-ec2 amazon-web-services amazon-cloudformation

我现在设置了一个可扩展的负载均衡器,主要遵循这个模板:

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>
Run Code Online (Sandbox Code Playgroud)

如何通过 SSH 连接到我的实例?在此先感谢您的帮助!

MLu*_*MLu 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" }
                }
        },
Run Code Online (Sandbox Code Playgroud)

然后更新堆栈...

在此处输入图片说明

并重新检查路由表

在此处输入图片说明

现在您应该能够通过 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 ~]$ 
Run Code Online (Sandbox Code Playgroud)

希望有帮助:)