HVM完全虚拟化 - 在Amazon Web Services中设置堡垒主机

时间:2014-07-07 20:25:54

标签: amazon-web-services ssh amazon-ec2 virtual-machine virtualization

我创建了一个公共&的VPC。使用VPC向导的私有子网。我正在使用Elasticbeanstalk来部署我的应用程序。有两种环境:网络和工人层。

两种环境都是负载平衡的,并且启用了自动缩放。

网络层ELBNAT& bastion host位于VPC的公有子网中。 Web层EC2,工作层EC2RDS位于VPC的私有子网中。

所有实例都可以相互通信,私有实例可以通过NAT连接到Internet,一切正常。

我按照本指南:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo-vpc-bh.html一步一步地创建了一个堡垒主机。

在我的情况下,我想连接到堡垒主机并访问工作层中的EC2实例。因此,当我cd /var/app/current时,我希望能够访问我的应用程序文件。

不知何故,我随机设法做到了。我很满意它所以我决定关闭实例(堡垒主机),因为当时我不需要它。两个小时后,我试图再次这样做,但就像我的大脑被擦除而无法工作一样。

当我ssh到堡垒主机时,我得到一个空白的linux实例,而不是连接到工作层EC2。

编辑:我认为我需要HVM虚拟化,因此我选择了ami-892fe1fe。当我ssh到机器时,我仍然无法$ cd /var/app

编辑:所有私有EC2实例都具有半虚拟化虚拟化,其AMI为ami-2918e35e(由elasticbeanstalk设置)。


TL;博士

我在这两个小时内做了很多改变。我现在不确定我做了什么并且有效。

组合太多了,所以我会问一些事情:

  • 工作层中的实例是否需要SSH密钥?
  • 如果是,SSH密钥是否需要与堡垒主机相同?因此它将自动连接到工作层EC2实例。
  • 我需要使用特定的AMI才能工作吗?我尝试过许多AMI,例如ami-892fe1feami-2918e35e
  • 堡垒主机需要什么样的AMI角色?工作层中的EC2实例具有WorkerTier角色。我尝试使用Noneaws-elasticbeanstalk-ec2-role(由ElasticBeanstalk生成)和WorkerTierRole,但都没有效果。 WorkerTierRole只是一个特殊的IAM角色,允许EC2访问SQS和CloudWatch指标。
  • 我是否需要将弹性IP附加到堡垒主机或使用“自动为您的实例分配公共IP地址”复选框?指南说使用弹性IP。我用过的都没有。

以下是我的VPC的安全组(而不是bastion host我将其命名为ssh):

 Group ID    | Group Name | VPC ID       | Description
 sg-1de43178 | ssh        | vpc-fa22c89f | bastion host

入站:SSH,TCP,22,0.0.0.0 / 0

出站:SSH,TCP,22,10.0.1.0 / 24

所有流量,全部,全部,0.0.0.0 / 0


 Group ID    | Group Name | VPC ID       | Description
 sg-2ffa2f4a | worker     | vpc-fa22c89f | VPC Security Group

入站:所有流量,全部,全部,0.0.0.0 / 0

出站:所有流量,全部,全部,0.0.0.0 / 0


 Group ID    | Group Name  | VPC ID       | Description
 sg-483ff52d | default     | vpc-fa22c89f | default VPC security group

入站:所有流量,全部,全部,sg-483ff52d(默认)

所有流量,全部,全部,sg-1de43178(ssh)

出站:所有流量,全部,全部,0.0.0.0 / 0


 Group ID    | Group Name   | VPC ID       | Description
 sg-d23ff5b7 | awseb....... | vpc-fa22c89f | Load Balancer Security Group

入站:HTTP,TCP,80,0.0.0.0/0

出站:HTTP,TCP,80,0.0.0.0/0


 Group ID    | Group Name   | VPC ID       | Description
 sg-db3ff5be | awseb....... | vpc-fa22c89f | VPC Security Group (for web)

入站:HTTP,TCP,80,sg-d23ff5b7(awseb -......)

出站:HTTP,TCP,80,0.0.0.0/0


堡垒主机属于安全组ssh。 NAT实例属于default。 Worker实例属于sg-2ffa2f4a,sg-483ff52d。 Web实例属于sg-db3ff5be,sg-483ff52d。

我真的不知道我在这里失踪了什么。任何想法都将受到高度赞赏!

编辑:当我连接到blank堡垒主机时,我尝试了各种命令来连接到我的工作室实例: $ ssh ec2-user@10.0.1.174 $ ssh ec2-user@ip-10-0-1-174.eu-west-1.compute.internal $ yum install telnet; telnet 10.0.1.174 22

前两个命令给了我一个公钥错误(这里不足为奇)。我不确定将公钥导入堡垒主机的最佳方式是什么以及安全性如何。

键入字符后的第三个命令会抱怨协议不匹配。

1 个答案:

答案 0 :(得分:0)

解决方案是在Worker Tier中的ElasticBeanstalk中创建一个新环境,方法是选择加载worker配置&将工作者应用程序推送到VPC内部,但是在公共子网中,以便我可以通过SSH访问它。

这样,实例就可以使用我需要的应用程序文件,同时仍然可以访问数据库。

修改

可以通过NAT编辑iptables并使用端口转发到connect to a private instance

获得的经验教训:

有时会出现问题的替代解决方案,我们无法看到它们,因为我们不会立即考虑开箱即用。