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

如何限制AWS EC2 22端口仅允许AWS CodeBuild访问?

解决方案:限制EC2 22端口访问并通过CodeBuild复制文件

1. 收紧EC2安全组的22端口规则

先修改EC2关联的安全组入站规则,替换原有的0.0.0.0/0(允许所有IP访问):

  • 添加规则1:允许你的公网IP访问22端口(格式为xxx.xxx.xxx.xxx/32,自己的公网IP可通过搜索“我的IP”获取)
  • 添加规则2:允许CodeBuild所在VPC的子网CIDR访问22端口。如果你的CodeBuild还没配置VPC,先进入CodeBuild项目设置,将其配置到与EC2同VPC的子网(私有/公有子网均可,根据你的网络架构选择),然后把该子网的CIDR填入规则(例如10.0.1.0/24)

2. 配置CodeBuild的SSH密钥访问权限

  • 将EC2的SSH私钥(.pem文件的内容)存入AWS Secrets Manager,命名比如EC2-SSH-Key
  • 编辑CodeBuild的执行IAM角色,添加权限:允许secretsmanager:GetSecretValue操作针对上述密钥资源
  • 在CodeBuild项目的环境设置中,确保开启“允许访问AWS服务”,保证流水线能正常调用Secrets Manager

3. 编写buildspec.yml实现文件复制

在你的buildspec.yml中加入以下构建步骤,完成文件复制:

version: 0.2

phases:
  build:
    commands:
      # 从Secrets Manager拉取SSH私钥
      - aws secretsmanager get-secret-value --secret-id EC2-SSH-Key --query SecretString --output text > ec2-key.pem
      # 设置私钥权限(SSH要求权限不能过宽)
      - chmod 400 ec2-key.pem
      # 用scp复制单个/多个文件到EC2,替换占位符为你的实际信息
      - scp -i ec2-key.pem -o StrictHostKeyChecking=no ./your-local-files/* ec2-user@<EC2-IP>:/remote-target-folder/
      # 若需复制整个目录,推荐用rsync(更高效):
      # - rsync -avz -e "ssh -i ec2-key.pem -o StrictHostKeyChecking=no" ./your-local-dir/ ec2-user@<EC2-IP>:/remote-target-folder/

注意:ec2-user是Amazon Linux系列的默认用户名,Ubuntu系统请换成ubuntu;<EC2-IP>如果是同VPC内的EC2,填私有IP即可,跨VPC则填公网IP(需确保CodeBuild能访问到)

4. 验证效果

  • 用自己的设备SSH登录EC2,确认访问正常
  • 手动触发CodeBuild流水线,查看构建日志,确认文件成功复制到EC2目标路径
  • 尝试用其他外部IP访问EC2的22端口,应该会被安全组拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:22:51