LoginSignup
0
0

EC2 Instance Connect + AWS Systems Manager Session Managerでプライベートサブネット内のEC2へSSHポートフォーワーディング

Last updated at Posted at 2023-06-22

概要

ローカルマシンからプライベートサブネット内のEC2インスタンスへポートフォーワーディング接続を行い、ローカルマシンにインストールされた「pgAdmin 4」を使用して、Aurora PostgreSQLへ接続する手順について記載します。

前提

  • ローカルマシンにAWS CLIがインストール済みである事。
  • ローカルマシンにアクセスキー・シークレットキーおよび環境変数「AWS_PROFILE」が設定済みである事。
  • ローカルマシンにpgAdmin 4がインストール済みである事。
  • EC2インスタンスにSSMエージェントがインストール済みである事。
  • EC2インスタンスにIAMポリシー「AmazonEC2RoleforSSM」がアタッチ済みである事。

準備

以下のリンクからSessionManagerPluginのダウンロード、またはコマンドを実行してローカルマシンにセッションマネージャー用プラグインをセットアップ

Windowsの場合

Macの場合

$ brew install --cask session-manager-plugin
$ session-manager-plugin --version
  1.2.463.0

VPCエンドポイントの作成

EC2インスタンスが属するプライベートサブネットに以下のVPCエンドポイント群を作成

  • ssm.<AWSリージョン>.amazonaws.com
  • ssmmessages.<AWSリージョン>.amazonaws.com
  • ec2messages.<AWSリージョン>.amazonaws.com

秘密鍵・公開鍵の作成

以下のコマンドで秘密鍵および公開鍵を生成、.sshディレクトリに配置

$ ssh-keygen -t rsa -b 4096
$ mv ~/.ssh/id_rsa ~/.ssh/<秘密鍵名>.pem ← 任意の秘密鍵名に変更
$ mv ~/.ssh/id_rsa.pub ~/.ssh/<公開鍵名>.pub ← 任意の公開鍵名に変更

上記コマンドはmacOS環境に最適化されています。ご利用のOSに合わせてコマンドを適宜変更してください。

パーミッション変更

以下のコマンドで秘密鍵のパーミッションを変更

$ chmod 600 ~/.ssh/<秘密鍵名>.pem
$ chmod 600 ~/.ssh/<公開鍵名>.pub

上記コマンドはmacOS環境に最適化されています。ご利用のOSに合わせてコマンドを適宜変更してください。

SSH用のコンフィグ設定

以下の構文を".ssh/config"の末尾に記載

host i-* mi-*
        User <OSユーザー名>
        Hostname %h
        Port 22
        ProxyCommand sh -c "aws ec2-instance-connect send-ssh-public-key --instance-id %h --availability-zone ap-northeast-1a --instance-os-user <OSユーザー名> --ssh-public-key file://~/.ssh/<公開鍵名>.pub && aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
        IdentityFile ~/.ssh/<秘密鍵名>.pem

上記コマンドの例ではAZ「ap-northeast-1a」を指定していますが、EC2インスタンスの存在するAZに合わせて変更してください。

ポートフォーワーディング接続

以下のコマンドでAurora PostgreSQLにポートフォーワーディング接続します。

$ ssh -fNL 15432:<接続先DBエンドポイント>:5432 -i "~/.ssh/<秘密鍵名>.pem" <EC2インスタンスID>

上記コマンドの例ではローカルマシンのポートは「15432」でリッスン、接続先DBエンドポイントへはポート「5432」で接続しています。

pgAdmin 4の接続設定

ローカルマシンにインストールした「pgAdmin 4」を起動して、以下の画像の通り「Host name/address」に「localhost」、「Port」に「15432」を入力、Saveを実行して下さい。

Connectionタブ
2023062201.jpg

ポートフォーワーディング切断

以下のコマンドでポートフォーワーディングを実行しているSSHのプロセスIDを特定して、killコマンドを実行するとSSHポートフォーワーディングを切断できます。

$ ps -ef | grep -v grep | grep '\-fNL'
11677692 <プロセス番号>     1   0  4:33PM ??         0:00.01 ssh -fNL 15432:<接続先DBエンドポイント>:5432 -i ~/.ssh/<秘密鍵名>.pem <インスタンスID>
$ kill <プロセス番号>

上記コマンドはmacOS環境に最適化されています。ご利用のOSに合わせてコマンドを適宜変更してください。

0
0
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
0
0