我已经研究这个问题几个小时了,也许这是不可能的,也许是不可能的。
我在 AWS 中有一个 VPC,带有几个 EC2 实例和 Lambda 实例。
截至目前,lambda 可以毫无问题地调用、ssh 等连接 EC2 服务器。
我的 lambda 在“出站”中使用仅包含 HTTP、HTTPS 和 SSH 的安全组。
我的 ec2 默认安全组仅接受 22 个入站(来自我的 Lambda 安全组和我的办公室 IP)。
如果我在公有子网上创建一个 ec2 实例,我和我的 lambda 函数都可以通过 ssh 访问它。
如果我在我的私有子网上创建它,我的 lambda 可以 ssh 但我不能...
我真的必须拥有 NAT 服务器才能实现此目的吗?
TL:博士;只有我的办公室和我的 lambda 可以访问我的 ec2 实例。
通过 SSH 访问 EC2 实例时要考虑的第一个选项是EC2 实例连接 https://aws.amazon.com/blogs/compute/new-using-amazon-ec2-instance-connect-for-ssh-access-to-your-ec2-instances/它允许您使用 IAM 控制对 EC2 实例的访问,并提供从 AWS 控制台或常规命令行 SSH 工具的访问。
第二个选项是用于对 EC2 实例进行 Shell 访问的 AWS Systems Manager 会话管理器 https://aws.amazon.com/blogs/aws/new-session-manager/。您基本上在浏览器中运行 SSH 会话,它可以针对所有 EC2 实例,无论公共/私有 IP 或子网如何。 EC2 实例必须运行最新版本的 SSM 代理,并且必须使用适当的 IAM 角色(包括 AmazonEC2RoleForSSM 中的关键策略)启动。无需允许入站端口 22 的堡垒主机或防火墙规则。
要考虑的第三个选项是AWS Systems Manager 运行命令 https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html它允许您在 EC2 实例上远程运行命令。它不像 SSH 那样是交互式的,但如果您只是想运行一系列脚本,那么它非常好。同样,实例必须运行 SSM 代理并具有适当的 IAM 策略,并且此选项避免了通过堡垒主机建立隧道的需要。
最后,如果您确实必须从办公室笔记本电脑通过 SSH 连接到私有子网中的 EC2 实例,则可以通过堡垒主机来实现。你需要一些东西:
- VPC 中的 IGW 和 NAT
- VPC 公有子网中具有公有 IP 的堡垒主机
- 堡垒上的安全组允许从您的笔记本电脑进行入站 SSH
- 从私有子网到 NAT 的默认路由
- 私有 EC2 实例上允许来自堡垒的入站 SSH 的安全组
然后你必须通过堡垒主机建立隧道。看安全连接到在私有 Amazon VPC 中运行的 Linux 实例 https://aws.amazon.com/blogs/security/securely-connect-to-linux-instances-running-in-a-private-amazon-vpc/了解更多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)