AWS SSM EC2 SSH Proxy Command 使用指南
项目介绍
AWS SSM EC2 SSH Proxy Command 是一个开源工具,它使得开发者和运维人员能够通过 AWS Systems Manager (SSM) 安全地连接到 EC2 实例,无需将敏感的 SSH 密钥直接分布在各个用户之间。该工具利用 ec2-instance-connect
功能,确保了更加细化的权限管理,仅需授予 ec2-instance-connect:SendSSHPublicKey
权限,而不是全面的 SSM 命令执行权限,以此增加安全性并简化权限管理。
项目快速启动
环境准备
-
安装 AWS CLI:
# MacOS brew install awscli # 或者在Windows上通过Chocolatey choco install awscli
-
安装 AWS CLI Session Manager 插件:
# MacOS brew install session-manager-plugin
Windows 用户需参考 AWS 文档手动下载并设置。
-
下载 SSM SSH Proxy Command 脚本:
- 对于Linux和MacOS,在
~/.ssh/
目录下保存脚本并赋予权限。
curl -o ~/.ssh/aws-ssm-ssh-proxy-command.sh https://raw.githubusercontent.com/qoomon/aws-ssm-ec2-proxy-command/master/aws-ssm-ssh-proxy-command.sh chmod +x ~/.ssh/aws-ssm-ssh-proxy-command.sh
- Windows用户处理方式类似,但使用PowerShell脚本。
- 对于Linux和MacOS,在
-
配置SSH: 编辑
~/.ssh/config
,添加以下配置(调整你的私钥路径)。host i-* mi-* IdentityFile ~/.ssh/id_ed25519 ProxyCommand ~/ssh/aws-ssm-ssh-proxy-command.sh %h %r %p ~/.ssh/id_ed25519.pub StrictHostKeyChecking no
-
确保IAM权限: 创建或更新策略以允许使用
ec2-instance-connect:SendSSHPublicKey
及可能需要的ssm:StartSession
。
连接到实例
运行以下命令来连接到EC2实例,替换<INSTANCE_ID>
和相应的用户名(如ec2-user
)。
ssh ec2-user@<INSTANCE_ID>
对于Windows,使用PowerShell执行相应的命令。
应用案例和最佳实践
- 安全访问: 限制直接SSH访问,通过SSM代理增强安全性,特别是在多用户环境。
- 细粒度权限控制: 利用IAM角色为不同团队成员分配精确的权限,避免过度授权。
- 自动化部署: 结合CI/CD流程,自动推送SSH公钥到实例,实现无密码自动部署。
- 紧急响应: 在不修改实例本身的情况下快速接入,处理生产环境紧急问题。
典型生态项目
虽然直接与该项目相关的特定生态项目没有明确指出,但是与AWS SSM紧密集成的解决方案,如自动化运维脚本、基础设施即代码(IaC)工具(Terraform, CloudFormation模板),以及持续集成与交付(CI/CD)系统,都是其应用扩展的生态组成部分。通过这些生态项目,可以进一步提升对AWS资源的管理和自动化水平,尤其是在结合SSM的场景中,促进了高效且安全的远程操作和配置管理。
此文档提供了基础入门指导,详细配置和高级用法应参照原始项目文档和AWS官方指南进行深入学习。