You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform管理的AWS EC2 SSH堡垒机多用户SSH密钥管理方案咨询

SSH堡垒机多用户IAM鉴权方案

你提到的基于IAM用户关联SSH密钥实现堡垒机鉴权的思路完全可行,以下是两类可落地的方案,均支持Terraform集成:

方案1:原生AWS EC2 Instance Connect(推荐)

这是AWS官方提供的标准化方案,无需自行维护鉴权逻辑,适配性最高:

  • 权限控制完全在IAM侧实现,无需在堡垒机本地存储任何公钥或用户信息。你可以通过IAM策略限制仅指定用户组、带对应标签的用户具备堡垒机登录权限,策略条件可匹配IAM用户标签、用户组归属、目标堡垒机实例ID、登录使用的操作系统用户名等规则,完全符合你的校验需求。
  • 核心权限为ec2-instance-connect:SendSSHPublicKey,将该权限附加给允许登录的IAM用户/用户组即可。用户登录时先通过AWS CLI将本地公钥临时推送到堡垒机(公钥有效期仅60秒),再完成SSH鉴权,全程无敏感信息持久化存储。
  • Terraform集成成本极低:Amazon Linux 2/2023默认预装EC2 Instance Connect组件,你仅需通过Terraform管理IAM策略、用户组关联规则即可,无需修改堡垒机的默认SSH配置。
  • 额外优势:用户身份生命周期和SSH权限完全联动,删除IAM用户后登录权限自动回收,无需手动清理堡垒机本地配置。

方案2:自定义SSH AuthorizedKeysCommand(适配原生SSH登录习惯)

如果你需要支持用户直接用原生ssh命令登录,无需前置AWS CLI调用,可选择自行实现鉴权脚本:

  • 首先通过Terraform为堡垒机实例绑定IAM角色,为角色授予iam:GetSSHPublicKey、iam:ListGroupsForUser、iam:GetUser等IAM只读访问权限,限制权限仅用于拉取用户公钥和身份信息。
  • 在堡垒机的sshd配置中添加如下规则:
    AuthorizedKeysCommand /usr/local/bin/iam-ssh-auth.sh %u
    AuthorizedKeysCommandUser root
    
    自行实现的iam-ssh-auth.sh脚本逻辑如下:
    • 接收SSH登录传入的用户名(与IAM用户名保持一致,例如bob)
    • 调用IAM API校验该用户是否属于指定允许登录的用户组、是否携带要求的标签
    • 校验通过后拉取该用户在IAM中上传的SSH公钥,输出给SSH服务完成鉴权
  • 脚本部署、sshd配置修改可通过Terraform的user_data参数在实例初始化时自动完成,也可配合配置管理工具实现代码化管理。
  • 注意事项:可在堡垒机本地对公钥做5-10分钟的缓存,避免频繁调用IAM API触发限流。

内容的提问来源于stack exchange,提问作者sonnenhund

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:36:03