我一直在解决这个问题几个小时,也许它不可能,也许它是。
我在AWS中有一个VPC,有几个EC2实例和Lambda实例。
截至目前,lambda可以调用,ssh等等到EC2服务器没有问题。
我的lambdas在“Outbound”中使用的安全组只有HTTP,HTTPS和SSH。
我的ec2默认安全组只接受22个入站(来自我的Lambda安全组,和我的办公室IP)。
如果我在公共子网上创建ec2实例,我和我的lambda函数都可以通过ssh访问它。
如果我在我的PRIVATE子网上创建它,我的lambdas可以ssh但我不能...
我真的必须拥有NAT SERVER才能实现这一目标吗?
TL:DR;只有我的办公室和我的lambdas才能访问我的ec2实例。
要考虑对EC2实例进行SSH访问的第一个选项应该是AWS Systems Manager Session Manager for Shell Access to EC2 Instances。这可能是一件大事。没有更多的堡垒,没有更多的防火墙规则允许入站端口22.您基本上在浏览器中运行SSH会话,它可以针对所有EC2实例,无论公共/私有IP或子网。 EC2实例必须运行SSM代理的最新版本,并且必须已使用适当的IAM角色启动(包括来自AmazonEC2RoleForSSM的密钥策略)。
要考虑的第二个选项是AWS Systems Manager Run Command,它允许您在EC2实例上远程运行命令。它不像SSH那样具有交互性,但如果你只想运行一系列脚本,那就非常好了。同样,实例必须运行SSM代理并具有适当的IAM策略,并且此选项避免了通过堡垒主机的隧道。
最后,如果你真的必须从办公室笔记本电脑SSH到私有子网中的EC2实例,你需要做一些事情:
然后你必须穿过堡垒主机。有关更多信息,请参阅Securely Connect to Linux Instances Running in a Private Amazon VPC。
您可以参考:https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html您必须使用NAT网关访问私有子网中的任何内容。