Help us understand the problem. What is going on with this article?

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

どうも、若松です。

先日ローンチされた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の変更を自動化しておく必要があるかと思います。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away