fix_public_sg.sh 1.68 KB
#!/bin/bash

# 专门修复第二个安全组的公网规则问题

set -e

echo "=== 修复安全组 sg-04a74a6ad79bc99e8 的公网规则 ==="

VPC_CIDR="10.0.0.0/16"
SG_ID="sg-04a74a6ad79bc99e8"

echo "安全组 ID: $SG_ID"
echo "VPC CIDR: $VPC_CIDR"

# 获取安全组名称
SG_NAME=$(aws ec2 describe-security-groups \
    --group-ids $SG_ID \
    --query 'SecurityGroups[0].GroupName' \
    --output text)
echo "安全组名称: $SG_NAME"

# 检查当前规则
echo ""
echo "当前安全组规则:"
aws ec2 describe-security-groups \
    --group-ids $SG_ID \
    --query 'SecurityGroups[0].IpPermissions[?ToPort==`80` || ToPort==`443`]' \
    --output table

# 修复 80 端口
echo ""
echo "=== 修复端口 80 ==="
aws ec2 revoke-security-group-ingress \
    --group-id $SG_ID \
    --protocol tcp \
    --port 80 \
    --cidr 0.0.0.0/0 || echo "端口 80 没有公网规则或已删除"

aws ec2 authorize-security-group-ingress \
    --group-id $SG_ID \
    --protocol tcp \
    --port 80 \
    --cidr $VPC_CIDR || echo "端口 80 的 VPC 规则已存在"

# 修复 443 端口
echo ""
echo "=== 修复端口 443 ==="
aws ec2 revoke-security-group-ingress \
    --group-id $SG_ID \
    --protocol tcp \
    --port 443 \
    --cidr 0.0.0.0/64 || echo "端口 443 没有公网规则或已删除"

aws ec2 authorize-security-group-ingress \
    --group-id $SG_ID \
    --protocol tcp \
    --port 443 \
    --cidr $VPC_CIDR || echo "端口 443 的 VPC 规则已存在"

echo ""
echo "=== 修复后的安全组规则 ==="
aws ec2 describe-security-groups \
    --group-ids $SG_ID \
    --query 'SecurityGroups[0].IpPermissions[?ToPort==`80` || ToPort==`443`]' \
    --output table

echo "✅ 安全组修复完成"