EC2 Instance Connect Endpointを使ってプライベートEC2にログイン

2023/07/04

AWS Linux Mac Windows

t f B! P L

なんだかんだでやっぱりAWSといえばEC2を使うことが多々あります。

なので、プライベートサブネットにどうやってインターネットからアクセスするか、

が結構ネックになっており、一昔前ではパブリックサブネットに踏み台サーバを立てる、というやり方が主流でした。

実際にAzureやOracle CloudはBastionという名前で踏み台サーバ方式になっています。

一方、AWSではSystems Managerの機能で踏み台サーバいらずでプライベートサブネットのEC2にログインすることは可能だった。

過去にも↓の通りブログ記事にも書いた。


今回はこのSystems Manager(SSM)の機能を使うのではなく、

「EC2 Instance Connect Endpoint」という機能でプライベートサブネットのEC2にSSH/RDP接続してみよう、というお話。


SSMとの違いは以下。

  • EC2インスタンスにSSM用のIAMロールが不要
  • SSMのエンドポイントが不要(代わりにInstance Connect用のエンドポイントが必要)
  • RDP接続時はAWS CLIだけでOK(SSMは別途プラグインのインストールも必要)

SSM用のエンドポイントを作ると有料になってしまうが、(代わりにNATゲートウェイを建てる方法もあるけど、どちらにしろ有料)

Instance Connect用のエンドポイントは無料なので、

デフォルトで作っておいてもいいレベル。


Instance Connect用エンドポイント作成

やり方は簡単。

VPCのコンソールのエンドポイントから「エンドポイントを作成」をクリック。


サービスカテゴリに「EC2 Instance Connect Endpoint」を選択し、エンドポイント作成先のVPCを選択。


セキュリティグループとサブネットをそれぞれ選択。

ここでのセキュリティグループとしては、

 インバウンド:RDP/SSHを許可(宛先はVPCのCIDRでOK)

となるようなセキュリティグループを選ぶ。


しばらく待つとエンドポイントが作成される。


エンドポイントの作成は以上!


Instance ConnectでGUI接続(Linuxのみ)

Linuxであればコンソール経由でInstance Connectの接続が可能。

EC2を選択して、「接続」をクリック。


インスタンス接続画面で、「EC2 Instance Connect」を選び、

「EC2 Instance Connectエンドポイントを使用して接続する」を選択。

OSにログインするユーザー名(Amazon Linuxならec2-user)を設定し、

Instance Connectエンドポイントで先ほど作成したエンドポイントを選び、最後に「接続」をクリックする。


ブラウザベースになるけど、ログインすることができた。


Instance ConnectでCLI接続(Linux)

Windowsのコマンドプロンプト(要OpenSSH)やMacのターミナルアプリからでも同様にInstance Connect経由でSSHログインはもちろん可能。


AWS CLIを最新版にアップデートは事前にしておくこと。


その後、以下のコマンドを実行。

aws ec2-instance-connect ssh --instance-id i-xxxxxxxxxxxxx --connection-type eice

実際に実行した結果がこちら。


Amazon LinuxであればOSユーザー名省略でOK。

それ以外のLinuxなら「--os-user <ユーザー名>」のオプションを追加すればOK。


Instance ConnectでRDP接続(Windows)

次にWindowsにリモートデスクトップ接続したい時。

その場合は以下のコマンドを実行する。

aws ec2-instance-connect open-tunnel --instance-id i-xxxxxxxxxxxxx --remote-port 3389 --local-port 13389

localhostのポートの13389をリモート先EC2の3389に転送するようになる。


上記のようにコマンド実行後に「Listening for connections...」というメッセージが表示されればOK。


この状態でlocalhost:13389に対してリモートデスクトップ接続を行う。

Macのリモートデスクトップアプリだと以下のような感じ。


接続先EC2のユーザー名とパスワードを聞かれるので入力する。


証明書の警告が出るので、「Continue」をクリックする。


WindowsにRDP接続できた。


参考:Instance ConnectできるIAM権限

作業ベンダーなど、EC2にログインだけさせたいような場合は

専用のIAMユーザーを作って専用の権限を付与するのが安全。

どのような権限が必要なのかは公式サイトをご確認くださいw

やり方によっては接続元IPアドレス制限をかけたりすることもできるそうな。


SSMよりは遥かに手軽なので、EC2を立てる時はデフォルトで設定するのをオススメ

以前まではSSMのセッションマネージャー・フリートマネージャーを使う必要があったけど、

これからはEC2 Instance Connectで十分使える。

既にSSMを使っているところも、

EC2 Instance Connectに切り替えることでエンドポイントの費用が若干浮くので、

VPCを作成したらデフォルトで作ってもいいんじゃなかろうか。


と思ったけど、EC2 Instance ConnectはVPCに1つしか作ることができないので、

AZ障害が発生すると使えないという欠点もある。

あとはログ出力もSSMのほうが豊富っぽい。→EC2 Instance ConnectとSSMの違い


気軽に使うならEC2 Instance Connect、

厳格な要件で使うのならSSMのセッションマネージャー、

という棲み分け方かな??


うまく活用してもらえたらと思います。

検索

Blog Archive

Popular Posts

About Me

自分の写真
性別:男
年齢:ついに40over
趣味:Snowboard、パソコン、iPhone、子育て

仕事:ユー子の社内SEとしてサーバ、NW等のインフラ全般をやってます

日々生活していく中で思ったことなどをつらつらと書いていきます。

どうぞよろしく!

ブログランキング

ブログランキング・にほんブログ村へ

QooQ