通常のSSH接続の前後に aws cli を使ってセキュリティグループの修正を行うことで、SSHでつなぐときだけ自分のIPからAWSにつながるようにする方法というのを知ったのでやりかたと、つなぎ方についてのメモ。
準備
まずはツールの準備をします。
AWS CLI(とpip)のインストール
AWS CLI は pip から入手するんで、ない場合はまずそれをインストール。
pip は Mac なら easy_install から入手するのが楽みたい。
pipのインストール
1 |
$ sudo easy_install pip |
パスワード聞かれたら、OSのパスワードいれる
確認
1 |
$ pip --version pip 6.0.6 from /Library/Python/2.7/site-packages/pip-6.0.6-py2.7.egg (python 2.7) |
AWS CLI のインストール
1 |
$sudo pip install awscli |
確認
1 2 |
$ aws --v aws-cli/1.6.10 Python/2.7.6 Darwin/14.0.0 |
続いて、AWS CLI の初期設定をします。
AWS CLIの初期設定
AWS CLIには、アクセスキーとシークレットキーを使ってアクセスしますのでまずはこれを確認。
確認するには、AWSにログインして、右上のユーザー名をクリックし、表示されるサブメニューから「Security Credentials」をクリック。
すると、こんな画面になるので、「Access Keys (Access Key ID and Secret Access Key)」をクリックすると確認できます…が、Secret Access Key は確認できませんので、新規作成しましょう。(この画面からは、有効になってる Access Key がどれなのかまでは確認できます)
作成するとrootkey.csv というファイルをダウンロードできますので無くさないようにしましょう。 Secret Access Key をあとから確認するにはこのファイルを見る以外に方法が無いっぽいです。
無くしちゃったなら、新しく作ればいいじゃない、と思うかもしれませんが、どうも作れるのは2個までっぽいので、作りなおす場合は Secret Access Key がわからなくなった Access Key を一度削除してからやり直す形になるとおもいます。
でも、削除すれば当然そのキーは使えなくなるので、他に使ってる人がいる場合は注意ですね。
さて、アクセスキーを確認したらターミナルに戻ります。
ターミナルで aws configure と入力すると対話式で設定ができます。
1 2 3 4 5 |
$ aws configure AWS Access Key ID [None]: ************ AWS Secret Access Key [None]: ************ Default region name [None]: ap-northeast-1 Default output format [None]: json |
Default region name というのは、接続するリージョンです。東京ならば「ap-northeast-1」です
Default output format は出力方法です。json、table、text。よくわからないなら全部試すのもありかと。
設定を修正する場合はもういちど aws configure コマンドを実行するのが楽。
2回目以降は現在の設定値が[]のなかに書かれますので、変更がなければ何も入力せずEnterを押せば同じ値を使用(変更なし)として進められますので、最後の Default output format まで Enter連打で飛ばしてそこだけ変更すればいいと思いますし、一時的に変更したい場合は、 aws コマンドに引数を渡すことでそちらを優先させることもできるみたいです。
シェルスクリプトを用意
vimとか、なんか他のエディタでもいいんですが、とりあえず適当に sh ファイルを作ります。
1 2 3 4 5 6 |
#!/bin/sh MYSECURITYGROUP=sg-********** MYIP=`curl -s ifconfig.me` aws ec2 authorize-security-group-ingress --group-id $MYSECURITYGROUP --protocol tcp --port 22 --cidr $MYIP/32 ssh $@ aws ec2 revoke-security-group-ingress --group-id $MYSECURITYGROUP --protocol tcp --port 22 --cidr $MYIP/32 |
MYSECURITYGROUP には、設定したいセキュリティグループのIDを入れます。IDは、コントロールパネルの「NETWORK & SECURITY」→「Security Groups」から確認します。
注意して欲しいのは、「Group Name」ではなく、「Group ID」をいれるということです。sg-から始まる方。自分は間違えてNameをいれて暫くハマりました。
他はコピペで大丈夫なはず。
あとは、こんなかんじでコマンドを叩くと、
SSH接続の前に aws コマンドで自分のIPに対してSSH接続を許可し、SSHが終了したら接続許可も取り下げる、みたいにできます。
1 |
$./aws.sh -i mykey.pem ec2-user@XXX.XXX.XXX.XXX |
パスとかは適当に読み替えてください
参考サイト
コメントする