最近在AWS上弄了一个EC2主机用来放一些比较杂的东西,开放了某个端口,由于我并不想放开所有的IP的访问权限, 就写了一个脚本用来获取我本机的公网地址然后用AWS CLI获取,撤销、更新 AWS 安全组规则中的 IP 地址。
请确保你已经配置好 AWS CLI 并拥有适当的权限来执行相关操作。
获取当前允许访问端口 xx 的 IP 地址 #
#!/usr/bin/env fish
# 获取当前 IP
set current_cidr (aws ec2 describe-security-groups --group-ids sg-xxxxx --query "SecurityGroups[0].IpPermissions[?FromPort=='xx'].IpRanges[0].CidrIp" --output text)
echo "当前端口 xx 的 CIDR: $current_cidr"
撤销旧的 IP 权限 #
if [ -n "$current_cidr" ]
aws ec2 revoke-security-group-ingress --group-id sg-xxxxx --protocol tcp --port xx --cidr "$current_cidr"
echo "从端口 xx 撤销了 CIDR $current_cidr"
else
echo "未找到端口 xx 的 CIDR"
end
获取本机的公共 IP 地址 #
set local_ip (curl -s ifconfig.me)
echo "本机公共 IP 地址: $local_ip"
添加新的 IP 权限 #
if [ -n "$local_ip" ]
aws ec2 authorize-security-group-ingress --group-id sg-xxxxx --protocol tcp --port xx --cidr "$local_ip/32"
echo "将新的 CIDR $local_ip/32 添加到端口 xx"
else
echo "无法获取本机公共 IP 地址"
end
以上脚本中的 sg-xxxxx
需要替换为实际的安全组 ID。此脚本会按照上述步骤执行操作,以管理安全组规则