Open10
【AWS】AWS Systems Managerメモ
はじめに
AWS Systems Managerを使ってEC2インスタンスにアクセスする際、マネジメントコンソールからのアクセスではなく、ローカル環境からアクセスしたい。
また、その他関連する設定手順などを確認していく。
マシン情報
マシン | バージョンなど |
---|---|
MacOS | Sonoma |
参考
前提条件の確認
公式の前提条件を確認し、必要あるものは対応する
※今回は「AWS CLI」や「IAMロールサービスの許可」などが対応済みだったのと、その他項目も対応不要と判断して何もしなかった
macOS での Session Manager プラグインのインストール
- プラグインをダウンロード
ターミナル
curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac_arm64/session-manager-plugin.pkg" -o "session-manager-plugin.pkg"
- インストール実行
ターミナル
sudo installer -pkg session-manager-plugin.pkg -target /
sudo ln -s /usr/local/sessionmanagerplugin/bin/session-manager-plugin /usr/local/bin/session-manager-plugin
- インストール確認
ターミナル
session-manager-plugin
# 以下メッセージが表示されたら完了
The Session Manager plugin is installed successfully. Use the AWS CLI to start a session.
参考
書き直しのため削除
セッションの開始 (AWS CLI)
AWSマネジメントコンソールなどからインスタンスIDを取得し、以下を実行する
ターミナル
aws ssm start-session --target <インスタンスID>
セッションの終了
セッション開始している状態で、以下を実行する
ターミナル
exit
参考
SSMで利用するシェルの改善(設定可能なシェルプロファイルを有効にする)
対応の背景
SSMで利用するシェルは、デフォルトだとTABキーによる入力補完や、上下矢印キーによるコマンド履歴表示ができなかった。(AWSコンソール上のシェルと、ローカルのターミナルのシェル共に同じ動きだった)
使い勝手が悪いため、対応を行なった。
※以下、上下矢印キーを押下すると「[[A」の様になっている画面イメージ
対策
- AWSのAWS Systems Managerコンソール画面より、[セッションマネージャー] > [設定] > [編集] > [Linux shell profile] に対し、以下を入力し、[保存] を選択
ターミナル
exec /bin/bash
cd /usr
- セッション開始後、TABキーによる入力補完や、上下矢印キーによるコマンド履歴の表示ができたら完了
参考
Session Manager を通して SSH 接続のアクセス許可を付与および制御する
やりたいこと
- Privateサブネットに配置したEC2インスタンスに対し、インバウンドポートを開いたり、踏み台ホストを用意することなく、SSHやSCPでマネージドノード[1]へ接続したい。
前提条件
- EC2インスタンス作成時に、キーペアの作成を行っていること
- 上記で作成した秘密キーが、ローカルマシン内に存在すること
SSH/SCP接続のための、設定手順
- ローカルマシン内で「~/.ssh/config」ファイルを開き、公式の設定を追記する(ファイルの最下行などに追加する)
ターミナル
$ vim ~/.ssh/config
ターミナル
# SSH over Session Manager
host i-* mi-*
ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
- ローカルの秘密キーに対し、アクセス権限を設定する
(所有者以外のユーザーによる読み取りを拒否する)
ターミナル
chmod 400 <my-key-pair>.pem
SSH接続手順
- ローカルマシンのターミナルで、以下コマンドで接続する
ターミナル
ssh -i <秘密キーのパス> <インスタンスのユーザー名>@<インスタンスID>
# 例: ssh -i ./my-key-pair.pem ubuntu@i-0123456789xxxxxxx
SCPによるファイル転送手順
- ローカルマシンのターミナルで、以下コマンドで接続する
ターミナル
scp -i <秘密キーのパス> <ローカル上のファイルパス> <インスタンスのユーザー名>@<インスタンスID>:<転送先のパス>
# 例: ssh -i ./my-key-pair.pem /Users/image.png ubuntu@i-0123456789xxxxxxx:./image.png
参考
-
EC2 マネージドノードとは、AWS Systems Manager(SSM) Agent が導入されている EC2 インスタンスを指す ↩︎
キーペア無しで起動したEC2インスタンスに、後からキーペアを設定する
以下を参考に設定する
Session ManagerでEC2インスタンスログイン後に、ユーザーを切り替える
AWS上の SessionManagerコンソール(もしくはローカルのAWS CLI)
# ubuntuユーザーでログイン(起動したAMIによってユーザー名が異なる)
sudo su --login ubuntu
# rootユーザーでログイン
sudo su --login
# ssmユーザーでログイン
sudo su --login ssm-user
参考
SSM上で「unzip」コマンドが使える様にする
「unzip」のインストール
AWS上の SessionManagerコンソール(もしくはローカルのAWS CLI)
sudo apt install unzip
「unzip」の使い方
AWS上の SessionManagerコンソール(もしくはローカルのAWS CLI)
unzip <ZIPファイルのパス>
# 例: unzip test.zip