当前位置: 首页 > article >正文

告别堡垒机:EC2 Instance Connect Endpoint 零公网IP连私有子网

公司有一堆 EC2 跑在 Private Subnet 里没有公网 IP。每次运维要先连 VPN再跳到堡垒机再 SSH 到目标实例。三层跳转光认证就要两分钟。 倡垒机还得维护——打补丁、轮换密钥、监控登录日志。说白了它本身就是个攻击面。 后来发现亚马逊云科技出了 EC2 Instance Connect EndpointEICE可以直接从本地 SSH 到 Private Subnet 的实例不需要公网 IP、不需要堡垒机、不需要 VPN。用 IAM 做认证连密钥管理都省了。 这篇记录下从零搭建的过程。 ## EICE 是什么一张图说清 你的电脑 → AWS API → EICE EndpointVPC内部→ 私有子网 EC2 关键点 - EICE 是亚马逊云科技托管的资源创建在你的 VPC 里 - 流量走 亚马逊云科技 内部网络EC2 不需要公网 IP - 认证走 IAM不是 SSH 密钥虽然也可以用密钥 - 免费——没有额外费用 传统方式 vs EICE | 对比项 | 堡垒机 | EICE | |--------|--------|------| | 公网 IP | 需要 | 不需要 | | 维护成本 | 需打补丁、监控 | 零维护 | | 认证方式 | SSH 密钥 | IAM 策略 | | 审计 | 自己搞日志 | CloudTrail 自动记录 | | 费用 | EC2 费用 | 免费 | | 攻击面 | 暴露公网 | 零暴露 | ## 第一步创建 EICE 用 CLI 创建指定 VPC 和子网 bash aws ec2 create-instance-connect-endpoint \ --subnet-id subnet-0123456789abcdef0 \ --security-group-ids sg-0123456789abcdef0 \ --region ap-northeast-1 或者用 Python python import boto3 ec2 boto3.client(ec2, region_nameap-northeast-1) response ec2.create_instance_connect_endpoint( SubnetIdsubnet-0123456789abcdef0, SecurityGroupIds[sg-0123456789abcdef0], PreserveClientIpFalse ) endpoint_id response[InstanceConnectEndpoint][InstanceConnectEndpointId] print(fEICE 创建中: {endpoint_id}) print(f状态: {response[InstanceConnectEndpoint][State]}) 创建大概需要 2-3 分钟。状态从 create-in-progress 变成 create-complete 就好了。 查看状态 python response ec2.describe_instance_connect_endpoints( InstanceConnectEndpointIds[endpoint_id] ) state response[InstanceConnectEndpoints][0][State] print(f当前状态: {state}) 几个注意事项 - 每个 VPC 最多 5 个 EICE - EICE 要创建在**和目标实例同一个 VPC** 里但不一定同一个子网 - 安全组要允许 EICE 访问目标实例的 22 端口SSH ## 第二步配安全组 EICE 的安全组规则很简单——出站放通到目标实例 python ec2_resource boto3.resource(ec2, region_nameap-northeast-1) # EICE 的安全组出站放通 SSH eice_sg ec2_resource.SecurityGroup(sg-eice-xxx) eice_sg.authorize_egress( IpPermissions[{ IpProtocol: tcp, FromPort: 22, ToPort: 22, UserIdGroupPairs: [{GroupId: sg-target-xxx}] }] ) # 目标实例的安全组入站允许来自 EICE 安全组的 SSH target_sg ec2_resource.SecurityGroup(sg-target-xxx) target_sg.authorize_ingress( IpPermissions[{ IpProtocol: tcp, FromPort: 22, ToPort: 22, UserIdGroupPairs: [{GroupId: sg-eice-xxx}] }] ) 用安全组引用而不是 IP 范围——这样不뮡 EICE 的私有 IP 怎么变规则都生效。 ## 第三步配 IAM 权限 这是 EICE 的精髓——用 IAM 控制谁能连哪台机器 json { Version: 2012-10-17, Statement: [ { Sid: AllowEICEConnect, Effect: Allow, Action: [ ec2-instance-connect:OpenTunnel ], Resource: arn:aws:ec2:ap-northeast-1:123456789012:instance-connect-endpoint/*, Condition: { NumericLessThanEquals: { ec2-instance-connect:maxTunnelDuration: 3600 } } }, { Sid: AllowSSHConnect, Effect: Allow, Action: [ ec2-instance-connect:SendSSHPublicKey ], Resource: arn:aws:ec2:ap-northeast-1:123456789012:instance/*, Condition: { StringEquals: { ec2:osuser: ec2-user } } }, { Sid: DescribeEndpoints, Effect: Allow, Action: [ ec2:DescribeInstanceConnectEndpoints, ec2:DescribeInstances ], Resource: * } ] } 亮点 - maxTunnelDuration限制单次连接时长最多 1 小时自动断开 - ec2:osuser限制只能用 ec2-user 登录不能 root - 可以用 ec2:ResourceTag 条件键限制只能连特定标签的实例 比如只允许连 Environmentstaging 的实例 json { Condition: { StringEquals: { ec2:ResourceTag/Environment: staging } } } 这比堡垒机的权限控制精细太多了——堡垒机上你能 SSH 到任何实例EICE 可以按标签、按实例 ID 精确控制。 ## 第四步连接 ### 方法一控制台直连 EC2 控制台 → 选实例 → Connect → EC2 Instance Connect → Connect using Private IP → 选 EICE → 连接。 浏览器里直接开终端最方便。 ### 方法二CLI SSH bash ssh -i my-key.pem ec2-useri-0123456789abcdef0 \ -o ProxyCommandaws ec2-instance-connect open-tunnel \ --instance-id i-0123456789abcdef0 这个命令做了什么 1. open-tunnel 通过 亚马逊云科技 API 建立一条隧道到目标实例 2. SSH 流量走这条隧道不经过公网 3. IAM 认证在 open-tunnel 这一步完成 ### 方法三不用密钥 EC2 Instance Connect 可以推送临时公钥60 秒有效 bash aws ec2-instance-connect send-ssh-public-key \ --instance-id i-0123456789abcdef0 \ --instance-os-user ec2-user \ --ssh-public-key file://~/.ssh/id_rsa.pub 推完公钥后 60 秒内 SSH 连接过期自动失效。不用长期管理密钥对。 ### 方法四SSH Config 配置 写到 ~/.ssh/config 里以后直连 Host staging-* User ec2-user IdentityFile ~/.ssh/my-key.pem ProxyCommand aws ec2-instance-connect open-tunnel --instance-id %n 然后 ssh staging-i-0123456789abcdef0 就行了。 ## 审计 每次通过 EICE 连接都会在 CloudTrail 留记录 python import boto3 cloudtrail boto3.client(cloudtrail, region_nameap-northeast-1) response cloudtrail.lookup_events( LookupAttributes[ { AttributeKey: EventName, AttributeValue: OpenTunnel } ], MaxResults10 ) for event in response[Events]: print(f时间: {event[EventTime]}) print(f用户: {event[Username]}) print(fIP: {event[Resources][0][ResourceName] if event.get(Resources) else N/A}) print(---) 谁、什么时间、连了哪台机器全部自动记录。堡垒机上你得自己配 session recording还得担心日志被篡改。 ## 成本 **免费**。EICE 不收费数据传输按正常 VPC 内流量计。 ## 我的踩坑记录 1. **创建后等 3 分钟**状态变 create-complete 才能用急着连会报错。 2. **安全组方向搞反**EICE 安全组要配出站规则目标实例安全组配入站规则。很多人把 EICE 的入站配了没用。 3. **EC2 Instance Connect 要装**Amazon Linux 2/2023 自带Ubuntu 需要 sudo apt install ec2-instance-connect。不装的话推公钥不生效。 4. **子网不能是纯 IPv6**EICE 目前需要 IPv4 子网或双栈子网。 5. **每个 VPC 最多 5 个**一般够用但多环境共用 VPC 的话要规划好。 ## 什么时候用 EICE什么时候用 SSM Session Manager 两个都能解决不暴露公网 IP 连实例的问题 | 对比 | EICE | SSM Session Manager | |------|------|---------------------| | 协议 | SSH/RDP标准端口| 专有通道 | | 客户端 | 标准 SSH | 亚马逊云科技 CLI SSM 插件 | | 文件传输 | SCP/SFTP | 需要额外配置 | | 端口转发 | 原生支持 | 支持 | | Agent | 不需要 | 需要装 SSM Agent | | 记录 | CloudTrail | CloudTrail S3/CloudWatch | 简单说习惯 SSH 工作流的用 EICE想要更完整的运维管控用 SSM。 以上代码基于亮马逊云科技 EC2 Instance Connect EndpointCLI 和 Python boto3 验证通过。 --- EICE 完全免费每个 VPC 最多 5 个支持 SSH 和 RDP。 文档https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-using-eice.html

相关文章:

告别堡垒机:EC2 Instance Connect Endpoint 零公网IP连私有子网

公司有一堆 EC2 跑在 Private Subnet 里,没有公网 IP。每次运维要先连 VPN,再跳到堡垒机,再 SSH 到目标实例。三层跳转,光认证就要两分钟。倡垒机还得维护——打补丁、轮换密钥、监控登录日志。说白了,它本身就是个攻击…...

IJIS投稿避坑指南:从LaTeX排版到Response Letter的17条实战经验

IJIS投稿避坑指南:从LaTeX排版到Response Letter的17条实战经验 第一次向IJIS投稿的研究者,往往会在技术细节上踩坑。这份指南不是泛泛而谈的流程介绍,而是聚焦那些容易被忽视却可能耽误进度的实操要点。从LaTeX编译报错到审稿人意见的巧妙回…...

Blender新手必看:如何用Rokoko插件快速将BVH动捕数据映射到FBX模型(附T-Pose避坑指南)

Blender动捕数据实战:Rokoko插件全流程解析与T-Pose避坑指南 在三维动画制作领域,动作捕捉技术的应用极大提升了角色动画的真实感和生产效率。对于Blender用户而言,Rokoko插件提供了一条将BVH动捕数据映射到FBX模型的便捷通道。本文将深入解析…...

MCU OTA升级中Flash空间划分的三种核心策略

1. MCU固件OTA升级中的Flash存储空间划分策略在嵌入式系统开发实践中,远程固件升级(Over-The-Air, OTA)已成为工业设备、IoT终端及消费类电子产品的标准能力。然而,OTA功能的可靠实现远不止于网络通信与固件传输——其底层依赖于对…...

突破屏幕边界:3大革新让三星电视变身专业游戏平台

突破屏幕边界:3大革新让三星电视变身专业游戏平台 【免费下载链接】moonlight-chrome-tizen A WASM port of Moonlight for Samsung Smart TVs running Tizen OS (5.5 and up) 项目地址: https://gitcode.com/gh_mirrors/mo/moonlight-chrome-tizen 你是否曾…...

Metpy实战:从数据到洞察——湿位涡剖面分析与暴雨预报

1. 湿位涡:暴雨预报中的"全能选手" 第一次听说湿位涡这个概念时,我正盯着气象台的暴雨预报图发愁。那天的预报结论写着"湿位涡异常区与强降水落区高度吻合",但作为刚入行的气象分析员,我完全不明白这个拗口的…...

Houdini VEX实战:5个新手必学的几何体操作技巧(附代码示例)

Houdini VEX实战:5个新手必学的几何体操作技巧(附代码示例) 刚接触Houdini的VEX语言时,很多人会被其强大的几何体操作能力所震撼,却又不知从何入手。本文将聚焦五个最实用、最能体现VEX效率的几何体操作技巧&#xff0…...

手把手教你用Python处理JSON和TXT销售数据(黑马程序员案例解析)

Python多源销售数据处理实战:从JSON/TXT到可视化分析 电商平台每天产生海量销售数据,这些数据往往以不同格式存储——有的团队习惯用TXT记录,有的系统默认输出JSON。作为数据分析师,能否高效处理这些异构数据,直接决定…...

LeetCode 热题 100 之 160. 相交链表 206. 反转链表 234. 回文链表 141. 环形链表 142. 环形链表 II

160. 相交链表 206. 反转链表 234. 回文链表 141. 环形链表 142. 环形链表 II 160. 相交链表 public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {if (headA null || headB null) return null;ListNode pA headA, pB headB;whi…...

FMCW雷达数据处理实战:从原始数据到距离FFT+CFAR检测的完整流程

FMCW雷达数据处理实战:从原始数据到距离FFTCFAR检测的完整流程 在工业检测和自动驾驶领域,FMCW雷达因其高精度和抗干扰能力成为核心传感器。本文将深入探讨从原始数据采集到距离FFT处理,再到CFAR目标检测的完整技术链条,为工程师提…...

3D Slicer自动分割肾脏实战:GrowCut算法从入门到避坑(附B站视频教程)

3D Slicer肾脏自动分割实战:GrowCut算法全流程解析与性能优化 在医学影像处理领域,肾脏分割是量化分析肾功能、辅助手术规划的重要基础。传统手工分割方式效率低下,而3D Slicer中的GrowCut算法通过半自动交互方式,能显著提升肾脏分…...

SGLang-v0.5.6环境安全手册:利用快照功能,构建稳定AI开发工作流

SGLang-v0.5.6环境安全手册:利用快照功能,构建稳定AI开发工作流 你有没有过这样的经历?花了大半天时间,终于把SGLang环境配置好,模型也加载成功了,正准备大展拳脚做几个有趣的推理实验。结果因为一个手滑&…...

ENVI实战:从图像噪声识别到智能滤波方案选择

1. 遥感图像噪声识别入门指南 第一次打开ENVI加载遥感图像时,很多人会被那些密密麻麻的彩色斑点吓到。这些就是图像噪声,它们就像照片上的污渍,会严重影响后续分析。我处理过上百幅卫星影像,发现噪声问题能占到处理时间的30%以上。…...

Fastjson vs Jackson:@JSONField和@JsonProperty的全面性能与应用场景解析

Fastjson与Jackson深度对比:从注解设计到高性能JSON处理实战 在当今微服务架构和前后端分离的浪潮中,JSON作为数据交换的事实标准,其处理效率直接影响系统整体性能。作为Java生态中最主流的两个JSON库,Fastjson和Jackson各有拥趸&…...

Fuel无人机自主探索实战解析:ROS接口与ESDF地图的协同更新机制

1. Fuel无人机自主探索系统概览 Fuel无人机自主探索系统是一套基于ROS框架的高性能环境感知与路径规划解决方案。这个系统的核心在于实现了传感器数据、环境建模和路径决策之间的高效协同。我曾在多个室内外测试场景中部署过这套系统,实测下来它的稳定性和实时性确实…...

Qwen3-4B新手避坑指南:环境配置与模型加载全流程解析

Qwen3-4B新手避坑指南:环境配置与模型加载全流程解析 1. 前言:为什么你需要这份指南 如果你刚刚接触Qwen3-4B这个模型,可能会觉得有点无从下手。网上的教程要么太简单,要么太复杂,真正能帮你避开那些坑的实用指南并不…...

Sanger测序 vs NGS vs 三代测序:如何选择最适合你的实验需求(含详细对比表)

Sanger测序 vs NGS vs 三代测序:如何选择最适合你的实验需求 在基因组学研究的工具箱里,测序技术就像不同倍数的显微镜——每种技术都有其独特的"焦距"和"分辨率"。当实验室新购置了一台Oxford Nanopore设备时,我们团队曾…...

智能招聘时代的效率革命与实践指南:AI HR简历筛选从核心功能、使用场景与落地价值深度解析

在招聘旺季,一个热门岗位动辄收到数百甚至上千份简历,HR团队每天花费大量时间在重复的简历翻阅和初步筛选上,效率低、体验差、还容易遗漏优质人才。随着人工智能技术的深度落地,AI HR简历筛选正在从根本上改变这一局面——它不仅让…...

Excel数据透视表实战:5分钟搞定销售数据分析(附常见错误排查)

Excel数据透视表实战:5分钟搞定销售数据分析(附常见错误排查) 当你面对密密麻麻的销售数据表格时,是否曾感到无从下手?数据透视表就是Excel中最强大的"数据翻译官",它能将杂乱无章的销售记录瞬间…...

手把手教你用Docker搭建DNS区域传送漏洞靶场(附修复指南)

从零构建DNS区域传送漏洞靶场:Docker实战与安全加固指南 DNS区域传送漏洞(DNS Zone Transfer Vulnerability)是网络安全领域一个经典却常被忽视的风险点。想象一下,攻击者只需发送一条简单的查询指令,就能获取你整个内…...

PHP工作流优化秘籍,开发效率瞬间飙升!

一、引言在当今数字化时代,企业对于高效的业务流程管理有着迫切的需求。而PHP作为一种广泛使用的编程语言,在工作流开发中扮演着重要角色。你知道吗?通过对PHP工作流进行优化,能够大幅提升开发效率,为企业带来诸多益处…...

ERP系统升级,让企业运营更高效

ERP系统升级,全方位优化企业运营在当今竞争激烈的商业环境中,企业要想保持领先地位,高效的运营管理至关重要。而ERP系统作为企业资源规划的核心工具,其升级对于企业的发展具有深远的意义。那么,ERP系统升级究竟能为企业…...

Linux内核devfreq实战:手把手教你为GPU实现动态调频(附Mali案例)

Linux内核devfreq实战:为GPU实现动态调频的完整指南 在嵌入式系统开发中,GPU等外设的功耗优化一直是工程师面临的重大挑战。当设备需要处理复杂图形渲染时,最高性能模式必不可少;但在显示静态界面时,维持高频只会白白消…...

PX4飞控自定义启动指南:如何通过SD卡脚本和SYS_AUTOSTART参数快速配置你的无人机机型

PX4飞控深度定制指南:从SD卡脚本到机型配置的完整实战手册 当你拆开崭新的Pixhawk 4飞控,准备为自组四旋翼注入灵魂时,PX4固件提供的两种核心定制方式将成为你的得力助手。不同于市面上大多数教程对启动流程的泛泛而谈,本文将带你…...

Python量化交易入门:从VNPY到聚宽,5款主流平台实战对比

Python量化交易平台深度评测:VNPY、聚宽等5款工具实战解析 在金融科技迅猛发展的今天,量化交易已经从机构专属逐渐走向个人开发者。作为Python技术栈的拥趸,我们该如何在众多平台中做出明智选择?本文将带您深入剖析5款主流Python量…...

BERT在智能客服中的实战指南:从模型选型到生产部署

BERT在智能客服中的实战指南:从模型选型到生产部署 最近在做一个智能客服项目,团队一直在纠结要不要上BERT。网上都说BERT效果好,但真要用到生产环境,心里还是有点打鼓——响应速度跟得上吗?训练成本会不会太高&#x…...

Windows CMD高效操作指南(从入门到精通)

1. 为什么你需要掌握CMD命令? 每次看到别人在黑色窗口里敲几行代码就能完成文件整理、批量重命名、网络故障排查,你是不是觉得特别神奇?其实这就是Windows自带的CMD命令行工具。虽然现在有图形化界面,但CMD在处理批量操作、自动化…...

ESP32+MicroPython实战:5分钟搞定MQTT本地服务器搭建与设备控制

ESP32MicroPython实战:5分钟搞定MQTT本地服务器搭建与设备控制 物联网开发中,设备间的通信是核心需求之一。MQTT协议凭借其轻量级、低功耗和高效的特点,成为物联网设备通信的首选方案。本文将带你快速搭建本地MQTT服务器,并通过ES…...

计算机毕业设计springboot剧本杀预约系统 基于SpringBoot的沉浸式推理游戏场馆预约管理平台 JavaWeb驱动的剧本推理体验服务预约与社区交流系统

计算机毕业设计springboot剧本杀预约系统967u1p9q (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。随着线下社交娱乐需求的持续增长,剧本杀作为融合角色扮演、逻辑推理…...

JEECGBoot实战:AutoPoi模板导出Excel的5个常见坑及解决方案

JEECGBoot实战:AutoPoi模板导出Excel的5个常见坑及解决方案 在企业级应用开发中,Excel导出功能几乎是每个后台管理系统必备的能力。JEECGBoot作为国内流行的快速开发框架,集成了AutoPoi这一强大的Excel工具,但实际开发中模板导出功…...