AWS EC2 Instance Connect(EIC) 是一种基于 IAM 的 EC2 登录机制,通过临时注入 SSH 公钥的方式实现对实例的安全访问,避免了长期维护 SSH Key 带来的安全与运维成本。
与传统 SSH 相比,EC2 Instance Connect 的核心优势在于:
- 不在实例上长期保存公钥
- 登录权限完全由 IAM 控制,可审计、可回收
- 公钥短时有效(约 60 秒),符合 Just‑In‑Time Access 模型
本文将从 安全组 → IAM → 实例 → 本地终端 四个层面,系统性讲解 EC2 Instance Connect 的完整配置过程,并明确区分每一步的操作边界。
示例环境说明
本文示例环境如下(仅用于演示):
- EC2 实例 ID:
i-0392cee4f942f23a9 - 区域:
ap-northeast-1(东京) - 公网 IP:
3.112.83.160 - 公网 DNS:
ec2-3-112-83-160.ap-northeast-1.compute.amazonaws.com

一、配置总览
EC2 Instance Connect 的配置涉及三个方面:
- AWS 平台配置
- 安全组(Security Group)
- IAM 策略与身份
- EC2 实例配置
- Instance Connect 软件包
- SSH 服务配置
- 本地终端配置
- AWS CLI
- SSH / Instance Connect CLI
二、AWS 平台配置
2.1 安全组端口配置(必需)
EC2 Instance Connect 并不会绕过 SSH,本质仍然是 SSH over TCP 22。
控制台操作步骤
- 登录 AWS 管理控制台 → EC2
- 左侧选择 安全组(Security Groups)
- 找到与实例
i-0392cee4f942f23a9关联的安全组 - 编辑 入站规则(Inbound rules)
推荐入站规则(ap‑northeast‑1)
| 配置项 | 值 |
|---|---|
| 类型 | SSH |
| 协议 | TCP |
| 端口 | 22 |
| 来源 | com.amazonaws.ap-northeast-1.ec2-instance-connect |
| 描述 | EC2 Instance Connect |
该前缀列表(Prefix List)由 AWS 官方维护,推荐优先使用。
备选方案(手动 IP)
如无法使用 Prefix List,可使用官方 IP 段(示例):
13.112.70.0/2915.168.105.160/29
⚠️ 不建议使用
0.0.0.0/0,生产环境应结合 VPN / Bastion 使用。

2.2 IAM 策略配置(核心)
EC2 Instance Connect 的安全性 完全依赖 IAM 策略设计,这是整个方案的核心。
2.2.1 创建自定义 IAM 策略
在 IAM 控制台:策略 → 创建策略 → JSON,填入:
| |
策略名称示例:
| |

2.2.2 策略设计说明
ec2-instance-connect:SendSSHPublicKey
- 用途:向指定 EC2 实例注入临时 SSH 公钥
- Resource:精确到实例 ID,符合最小权限原则
- Condition:限制可登录的 OS 用户,防止横向滥用
ec2:DescribeInstances
- 控制台 / CLI 连接时的必要只读权限
- 不支持资源级限制,只能使用
*
ec2:DescribeVpcs
- IPv6 / 控制台连接场景所需

2.2.3 生产环境最小权限示例
| |
2.3 绑定 IAM 身份
将策略附加到:
- IAM User(仅限测试)
- IAM Role + IAM Identity Center(生产推荐)


三、EC2 实例配置
官方 EC2 Instance Connect 所需的 SSH 配置默认已经完成,通常不需要任何手动修改。
这包括:
ec2-instance-connect已作为系统组件预装或自动启用sshd已配置AuthorizedKeysCommand指向 EIC
只有在以下情况下,才需要人工检查或调整 SSH 配置:
- 使用了 自定义 AMI
- 手动修改过
/etc/ssh/sshd_config - 关闭或移除了
AuthorizedKeysCommand
💡 换句话说:“默认支持 EIC” 才是正常状态,手动改 SSH 反而是例外情况。
3.1 手动安装 ec2-instance-connect
首次仍需通过传统 SSH 或者使用控制台串口等方式登录实例:
| |
Amazon Linux 2 / 2023
| |
Ubuntu
| |
3.2 手动校验服务状态
| |
如未运行:
| |
3.3 手动进行 SSH 配置检查
| |
期望看到:
| |

四、本地终端配置
4.1 安装 AWS CLI(v2)
| |
确保版本 ≥ v2

4.2 配置凭证
| |
或使用 SSO:
| |
五、连接方式
5.1 一条命令直接登录(CLI 高阶封装,强烈推荐)
| |
实际发生了什么?
这条命令是 AWS CLI v2 帮你自动完成了完整的 Instance Connect 流程:
- 在本地临时生成一对 SSH Key(不会写入
~/.ssh) - 调用
**ec2-instance-connect:SendSSHPublicKey**API,将公钥注入实例(约 60 秒有效) - 立即使用该私钥发起 SSH 连接
上述三个步骤被封装成了一个原子操作,对用户透明。
本质上,这是把“SSH 登录”升级成了一次 IAM 授权的 API 调用。

5.2 手动 CLI 方式
注入临时公钥
| |

立即登录
| |

5.3 日志审计


六、总结
EC2 Instance Connect 的本质是:
用 IAM 控制机器登录,用临时信任替代长期密钥。
它非常适合:
- Zero Trust 架构
- 合规与审计场景
- 多人协作的云主机运维
如果你已经在使用 KMS、STS、SSO,那么 EC2 Instance Connect 是一个非常自然的延伸。