🌊

Bitnami AMIにSSMセッションマネージャーでSSH接続する

に公開

はじめに

Wordpressを簡単に使えるBitnamiのAMI(bitnami-wordpress-6.8.0-r01-linux-debian-12-x86_64-hvm-ebs-nami)を使用してWordpressを構築する機会がありました。
そこでSSMセッションマネージャーでEC2への接続をする必要がありましたので、その方法をまとめていきます。
Amazon LinuxはSSM Agentがプリインストールされていますが、BitnamiのAMIは手動でインストールしないといけません。

今回はEC2がプライベートサブネットに配置されているので、SSM Agentインストール用に一パブリックサブネットに踏み台サーバを配置します。

また、今回はNATゲートウェイでインターネットへの接続を確保している状態で構築していきます。
(他にもVPCインターフェイスエンドポイントを使用する方法もあります)

SSMセッションマネージャーとは

セッションマネージャーはセキュアにサーバに接続するためのフルマネージド型のサービスです。
例えばこれを用いることでセキュリティグループを開けずにSSHで接続できます。
ブラウザもしくはCLIでEC2インスタンスにシェルアクセスができる。
SSH不要なので、SSHキーの管理やインバウンドポートの開放は不要で安全。

前提

  • プライベートサブネットがNATゲートウェイでインターネットに接続可能な状態
  • AMI (bitnami-wordpress-6.8.0-r01-linux-debian-12-x86_64-hvm-ebs-nami)使用
  • EC2はプライベートサブネットに配置済み

やってみる

踏み台サーバの作成

プライベートサブネットのEC2にアクセスするためだけなので、Amazon Linux・t2.micro等で大丈夫です。
作成時に秘密鍵を作成しておきましょう。

セキュリティグループ

インバウンドルール
※ソースは自分のIPなどに絞っておきましょう

アウトバウンドルール
送信先はプライベートサブネットのEC2のセキュリティグループを指定します。

接続確認

下記コマンドでログインできたらOK

ssh -i 作成した秘密鍵 ec2-user@踏み台サーバーのパブリックアドレス

プライベートサブネットEC2に踏み台サーバ経由でSSH接続

セキュリティグループ

プライベートサブネットのEC2のセキュリティグループのインバウンドに踏み台サーバのセキュリティグループを許可しましょう。

ProxyJumpを使って接続

~/.ssh/configに事前に下記を作成しておくことで、ローカルPCから踏み台サーバー経由でプライベートサブネットのEC2に接続できます。

Host bastion
  HostName 踏み台サーバのパブリックIPアドレス
  User ec2-user
  IdentityFile 踏み台サーバの秘密鍵のパス

Host private
  HostName プライベートIPアドレス
  User bitnami
  IdentityFile プライベートサブネットサーバの秘密鍵のパス
  ProxyJump bastion

次に下記コマンドで接続を確認します。

ssh private

SSMエージェントのインストール

今回はsnapを使用してインストールします。
OSがUbuntuであればsnap使用。Debianはsnap使用してもしなくてもOK。
dpkgでインストールする方法も記載します。

snap

下記コマンドでインストールしていきます。

sudo snap install amazon-ssm-agent --classic
sudo systemctl enable snap.amazon-ssm-agent.amazon-ssm-agent.service
sudo systemctl start snap.amazon-ssm-agent.amazon-ssm-agent.service

下記コマンドでenabledになっていればOKです。

sudo snap services

dpkg

# SSM エージェントのインストールパッケージをダウンロード
wget https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_amd64/amazon-ssm-agent.deb

# インストール
sudo dpkg -i amazon-ssm-agent.deb
sudo systemctl enable amazon-ssm-agent
sudo systemctl start amazon-ssm-agent

下記コマンドでenabledになっていればOKです。

sudo systemctl status snap.amazon-ssm-agent.amazon-ssm-agent.service

IAMロールの設定

セッションマネージャーに接続するためのポリシー(AmazonSSMManagedInstanceCore)がアタッチされたIAMロールをEC2に付与します。

SSM用セキュリティグループの設定

プライベートEC2のセキュリティグループのアウトバウンドで443を許可しておきましょう。

SSMセッションマネージャで接続を確認

マネジメントコンソールからSSMセッションマネージャーにアクセスします。
セッションを開始をクリックし、ターゲットインスタンスにエージェントをインストールしたEC2が表示されていることを確認できればOK。

踏み台サーバー、セキュリティグループの編集

SSMで接続できることが確認できたら下記を削除しておきましょう。

  • 踏み台サーバー削除
  • プライベートサブネットのEC2セキュリティグループの踏み台サーバー関連のものを削除

おわりに

今回は踏み台サーバー経由でSSMエージェントをインストールしました。
SSHコマンドでProxyJumpを使用する方法は短いコマンドで接続できるので、勉強になりました。
次はSSMを使用して、WinSCPでファイル転送ができるようにしていきたいと思います。

Discussion