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

如何通过.ebextension为Elastic Beanstalk配置多条SSHSourceRestriction规则

问题根因

aws:autoscaling:launchconfiguration命名空间下的SSHSourceRestriction配置项仅支持传入单个CIDR网段,所有多网段配置尝试不生效的核心原因都是在操作这个单值配置项,必然出现覆盖问题:

  • 逗号拼接多个CIDR不符合该配置项的参数格式,EB解析时无法识别多段值,最终只会生效0或1条规则
  • 同配置项下重复写value违反YAML语法,后写入的键值会直接覆盖前值
  • 拆分到多个.ebextension文件修改同一个option_name时,EB会按文件名字典序加载配置,最后加载的配置会覆盖之前所有同项配置,最终只会保留1条规则。
正确配置方法

不要使用内置的SSHSourceRestriction配置项,直接通过.ebextensions的资源定义段,向EB环境关联的安全组添加多条入站规则即可,步骤如下:

  • 删除所有现有配置中涉及SSHSourceRestriction的内容,避免配置冲突
  • 在项目的.ebextensions目录下新建配置文件(例如命名为ssh-multi-cidr.config),写入以下内容:
Resources:
  SSHIngressRule1:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId:
        Fn::GetAtt: [AWSEBSecurityGroup, GroupId]
      IpProtocol: tcp
      FromPort: 22
      ToPort: 22
      CidrIp: xx.xxx.8.0/21 # 替换为第一个需要放行的CIDR网段
  SSHIngressRule2:
    Type: AWS::EC2::SecurityGroupIngress
    Properties:
      GroupId:
        Fn::GetAtt: [AWSEBSecurityGroup, GroupId]
      IpProtocol: tcp
      FromPort: 22
      ToPort: 22
      CidrIp: 1xx.xxx.0.0/16 # 替换为第二个需要放行的CIDR网段
注意事项
  • 如需放行更多CIDR段,按照相同格式新增规则块即可,每个规则块的逻辑ID(比如示例中的SSHIngressRule1、SSHIngressRule2)保持全局唯一即可,无数量限制
  • 如果为环境指定了自定义安全组而非EB自动创建的默认安全组,只需要将GroupId字段的值替换为目标安全组ID即可
  • 配置完成后正常执行eb deploy部署环境,部署完成后即可在EC2安全组控制台看到多条生效的22端口入站规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:15:11