SSH到位于VPC中的私有子网中的AWS EC2实例

Mat*_*asN 1 ssh amazon-ec2 amazon-web-services

我一直在解决这个问题几个小时,也许它不可能,也许它是.

我在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实例.

jar*_*mod 6

对于访问EC2实例的SSH访问,首先考虑的选项应该是AWS Systems Manager会话管理器,用于Shell访问EC2实例.这可能是一件大事.没有更多的堡垒,没有更多的防火墙规则允许入站端口22.您基本上在浏览器中运行SSH会话,它可以针对所有EC2实例,无论公共/私有IP或子网.EC2实例必须运行SSM代理的最新版本,并且必须已使用适当的IAM角色启动(包括来自AmazonEC2RoleForSSM的密钥策略).

第二个需要考虑的选项是AWS Systems Manager Run Command,它允许您在EC2实例上远程运行命令.它不像SSH那样具有交互性,但如果你只想运行一系列脚本,那就非常好了.同样,实例必须运行SSM代理并具有适当的IAM策略,并且此选项避免了通过堡垒主机的隧道.

最后,如果你真的必须从办公室笔记本电脑SSH到私有子网中的EC2实例,你需要做一些事情:

  1. VPC中的IGW和NAT
  2. 堡垒主机,在VPC的公有子网中具有公共IP
  3. 堡垒上的安全组允许从您的笔记本电脑进行入站SSH
  4. 从私有子网到NAT的默认路由
  5. 私有EC2实例上的安全组,允许来自堡垒的入站SSH

然后你必须穿过堡垒主机.有关更多信息,请参阅安全连接到在私有Amazon VPC中运行的Linux实例.