fix_public_sg.sh
1.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/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 "✅ 安全组修复完成"