我在这个问题了几个小时一直在进行,也许它不是可能的,也许是。
我在AWS VPC的,与一对夫妇EC2实例和Lambda实例。
截至目前,该拉姆达可以调用,SSH等的EC2服务器没有问题。
我的lambda表达式使用的是安全组只有HTTP,在“出站” HTTPS和SSH。
我的EC2默认安全组只接受22入站(从我LAMBDA安全组,我的办公室IP)。
如果我在我的公共子网创建一个EC2实例,我和我的lambda函数可以通过ssh访问它。
如果我对我的私人子网创建它,我的lambda表达式可以ssh,但我不能...
难道我真的有一个NAT服务器才能实现这一目标?
TL:DR; 只有我的办公室和我的lambda表达式应该可以访问我的EC2实例。
对于SSH访问考虑EC2实例第一选择应该是AWS系统管理器会话管理器shell访问EC2实例 。 这是一个潜在的大问题。 没有更多的堡垒,没有更多的防火墙规则允许入站端口22,你基本上是在浏览器中运行的SSH会话,它可以针对所有EC2实例,无论公共/私有IP或子网的。 EC2实例必须运行到SSM代理的最新版本,并且必须已经用适当的IAM角色(包括AmazonEC2RoleForSSM主要政策)推出。
要考虑的第二个选项是AWS系统管理器运行命令 ,它允许你在你的EC2实例远程运行命令。 它不是像互动SSH,但如果你只是想运行的脚本序列,然后这是非常好的。 同样,对象必须是运行SSM代理,并有适当的IAM策略,此选项可避免通过堡垒主机需要隧道。
最后,如果你真的必须在专用子网从你的办公室的笔记本电脑连到了一EC2实例,你需要几件事情:
- IGW和NAT的VPC
- 堡垒主机与VPC内的公共子网的公共IP
- 在堡垒安全组让您的笔记本电脑的入站SSH
- 从专用子网到NAT的缺省路由
- 在私人EC2实例安全组允许呼入的SSH来自堡垒
然后你通过堡垒主机有隧道。 见安全地连接到Linux实例的私人亚马逊VPC运行更多。
您可以参考这个: https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html你将不得不使用NAT网关的专用子网访问任何东西。