AWS SSH接続, セキュリティグループ更新 自動化

グローバルIPアドレスが変わる環境で、毎回セキュリティグループを更新してssh接続するのがめんどくさいのでスクリプト書きました。"<>"で記載されたところを使用する環境に合わせて変更してください。

自動接続用スクリプト

IP=$(curl https://checkip.amazonaws.com)
##IPアドレス取得

aws ec2 authorize-security-group-ingress --group-id <セキュリティグループID> --protocol tcp --port 22 --cidr ${IP}/32
##現在使用中のIPアドレスを追加

ssh <接続先>
##ssh接続

自動削除用スクリプト

毎回上記のスクリプトを使用していると、古いIPアドレスを許可したままになり、ゴミルールが溜まっていきます。必要なルールだけ残して古いIPアドレスを許可するルールを一括で削除するスクリプトは下記です。

deleteIP_Array=(`aws ec2 describe-security-groups --group-ids <セキュリティグループID> |jq -r '.SecurityGroups[].IpPermissions[]|select(.ToPort== 22)|.IpRanges[].CidrIp|select(.!="<削除せずに残しておきたいCIDR>")'`)
##削除するIPアドレス一覧を取得

for deleteIP in ${deleteIP_Array[@]}
do
     aws ec2 revoke-security-group-ingress --group-id <セキュリティグループID>--protocol tcp --port 22 --cidr ${deleteIP}
done
##IPアドレスを削除

jq パッケージ インストール

上記のスクリプトではjqコマンド(JSONを操作するコマンド)を使用するのでjq パッケージもインストールしましょう。jqについてはManコマンドを読んでください。読みたくない人は下記のサイトをみてください。

https://dev.classmethod.jp/tool/jq-manual-japanese-translation-roughly

インストール方法:CentOS

sudo yum -y install epel-release
sudo yum -y install jq

インストール方法:Mac

$ brew install jq

brew パッケージをインストールしていない方は下記

https://qiita.com/pypypyo14/items/4bf3b8bd511b6e93c9f9

Windowsは知りませーん

この記事が気に入ったらサポートをしてみませんか?