LoginSignup
4
3

More than 3 years have passed since last update.

東京リージョンのマネージメントコンソールからInstanceConnectでSSHする際のIPレンジを調べるワンライナー

Posted at

どうも、若松です。

先日ローンチされたInstanceConnect、すこぶる便利ですね。
純粋なSSHなので、SessionManagerのような環境変数が読み込まれない等がなくて快適です。
ただし、コマンド履歴のログは取れないのでトレードオフですね。

コンソールからSSHする際に躓くIPレンジの許可

InstanceConnectは純粋なSSHのため、SGでIPレンジを許可してあげる必要があります。
許可するべきIPレンジは以下にありますが、探すのが面倒です。
https://ip-ranges.amazonaws.com/ip-ranges.json

そこで以下のBashワンライナーを駆使することで、許可すべきIPレンジを一発で出すことができます。(curlとjqを実行できることが前提です。)

curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq '.prefixes[]' | jq 'select(.service == "EC2_INSTANCE_CONNECT" and .region == "ap-northeast-1").ip_prefix'

ワンライナーの解説

curl

curlコマンドを用いてWeb上のjsonをダウンロードしています。
このjsonはAWSが公開している、AWSが使用しているIPレンジの一覧です。
-s はダウンロード時間などの無駄な情報を出力しないようにするオプションです。

1個目のjq

1個目のjqでprefixesの中身を抜き出しています。
これを入れている理由は、次に行うselectで、配列を渡してしまうとjsonのトップレベルが帰ってしまうからです。

2個目のjq

ここで絞り込みを行っています。
絞り込み条件は以下です。

項目
service EC2_INSTANCE_CONNECT
region ap-northeast-1

つまり、東京リージョンのInstanceConnectで使用されるIPレンジに絞っています。
さらに出力をip_prefixのみ指定することでIPレンジのみが出力されます。

2019/6/30時点では以下が出力されるはずです。

"3.112.23.0/29"

まとめ

最初は公開されているIPレンジを全て許可しなくてはいけないのかと絶望しましたが、絞ってみると案外少なくてホッとしました。
ただ、このIPレンジは追加/変更される可能性があるので、本気でマネージメントコンソールからのSSHを運用に組み込みたい場合は、定期的にjsonの変更を監視し、SGの変更を自動化しておく必要があるかと思います。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3