SSH进入VPC专用子网中的AWS EC2实例

时间:2018-10-15 12:38:07

标签: amazon-web-services amazon-ec2 ssh

我已经解决了这个问题了几个小时,也许不可能,也许是。

我在AWS中有一个VPC,其中有几个EC2实例和Lambda实例。

到目前为止,lambda可以毫无问题地调用,ssh等到EC2服务器。

我的lambda使用的安全组仅在“出站”中使用HTTP,HTTPS和SSH。

我的ec2默认安全组仅接受22个入站(来自我的Lambda安全组和我的办公室IP)。

如果我在公共子网中创建了一个ec2实例,我和我的lambda函数都可以通过ssh访问它。

如果我在PRIVATE子网上创建它,我的lambda可以ssh但我不能...

我真的必须拥有一个NAT服务器才能实现这一目标吗?

TL:DR;只有我的办公室和我的lambda才可以访问我的ec2实例。

3 个答案:

答案 0 :(得分:6)

考虑通过SSH访问EC2实例的第一个选项应为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策略,并且该选项避免了通过堡垒主机进行隧道传输的情况。

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

    VPC中的
  1. IGW和NAT
  2. 在VPC的公共子网中具有公共IP的堡垒主机
  3. 堡垒上的安全组允许您的便携式计算机上的入站SSH
  4. 从专用子网到NAT的默认路由
  5. 私有EC2实例上的安全组,该安全组允许从堡垒进入SSH

然后,您必须通过堡垒主机进行隧道传输。有关更多信息,请参见Securely Connect to Linux Instances Running in a Private Amazon VPC

答案 1 :(得分:0)

您可以参考以下内容:https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html 您将必须使用NAT网关来访问专用子网中的任何内容。

答案 2 :(得分:0)

  1. 创建堡垒主机。

  2. 这将是公有子网中的公有 EC2 实例,与您的私有 ec2 实例具有相同的安全组。

  3. 确保允许安全组内的流量。您可以通过为您的安全组创建入站规则来实现这一点。security group allow internal traffic

  4. 现在在 Windows 10 中,您可以通过命令提示符运行以下命令:

    <块引用>

    ssh -i your_private_key.pem ec2-user@private_ip -o "proxycommand ssh -W %h:%p -i your_private_key.pem ec2-user@public_ip"

  5. 替换上面发布的命令中的以下 3 个内容:

    • your_private_key
    • private_ip
    • public_ip