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