Open10

【AWS】AWS Systems Managerメモ

noknok

macOS での Session Manager プラグインのインストール

  1. プラグインをダウンロード
ターミナル
curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/mac_arm64/session-manager-plugin.pkg" -o "session-manager-plugin.pkg"
  1. インストール実行
ターミナル
sudo installer -pkg session-manager-plugin.pkg -target /
sudo ln -s /usr/local/sessionmanagerplugin/bin/session-manager-plugin /usr/local/bin/session-manager-plugin
  1. インストール確認
ターミナル
session-manager-plugin

# 以下メッセージが表示されたら完了
The Session Manager plugin is installed successfully. Use the AWS CLI to start a session.

参考

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/install-plugin-macos-overview.html
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/install-plugin-verify.html

noknok

セッションの開始 (AWS CLI)

AWSマネジメントコンソールなどからインスタンスIDを取得し、以下を実行する

ターミナル
aws ssm start-session --target <インスタンスID>

セッションの終了

セッション開始している状態で、以下を実行する

ターミナル
exit

参考

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#sessions-start-cli
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-working-with-sessions-end.html

noknok

SSMで利用するシェルの改善(設定可能なシェルプロファイルを有効にする)

対応の背景

SSMで利用するシェルは、デフォルトだとTABキーによる入力補完や、上下矢印キーによるコマンド履歴表示ができなかった。(AWSコンソール上のシェルと、ローカルのターミナルのシェル共に同じ動きだった)
使い勝手が悪いため、対応を行なった。
※以下、上下矢印キーを押下すると「[[A」の様になっている画面イメージ
ssm_シェル設定手順-1

対策

  1. AWSのAWS Systems Managerコンソール画面より、[セッションマネージャー] > [設定] > [編集] > [Linux shell profile] に対し、以下を入力し、[保存] を選択
ターミナル
exec /bin/bash
cd /usr

ssm_シェル設定手順-2

  1. セッション開始後、TABキーによる入力補完や、上下矢印キーによるコマンド履歴の表示ができたら完了
    ssm_シェル設定手順-3

参考

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-preferences-shell-config.html

noknok

Session Manager を通して SSH 接続のアクセス許可を付与および制御する

やりたいこと

  • Privateサブネットに配置したEC2インスタンスに対し、インバウンドポートを開いたり、踏み台ホストを用意することなく、SSHやSCPでマネージドノード[1]へ接続したい。

前提条件

  • EC2インスタンス作成時に、キーペアの作成を行っていること
  • 上記で作成した秘密キーが、ローカルマシン内に存在すること

SSH/SCP接続のための、設定手順

  1. ローカルマシン内で「~/.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'"
  1. ローカルの秘密キーに対し、アクセス権限を設定する
    (所有者以外のユーザーによる読み取りを拒否する)
ターミナル
chmod 400 <my-key-pair>.pem

SSH接続手順

  1. ローカルマシンのターミナルで、以下コマンドで接続する
ターミナル
ssh -i <秘密キーのパス> <インスタンスのユーザー名>@<インスタンスID>
# 例: ssh -i ./my-key-pair.pem ubuntu@i-0123456789xxxxxxx

SCPによるファイル転送手順

  1. ローカルマシンのターミナルで、以下コマンドで接続する
ターミナル
scp -i <秘密キーのパス> <ローカル上のファイルパス> <インスタンスのユーザー名>@<インスタンスID>:<転送先のパス>
# 例: ssh -i ./my-key-pair.pem /Users/image.png ubuntu@i-0123456789xxxxxxx:./image.png

参考

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/session-manager-getting-started-enable-ssh-connections.html

https://qiita.com/taishin/items/25d91e1037d1bc80fb39
https://zenn.dev/dem_1/articles/543b4835a3c1c7
https://dev.classmethod.jp/articles/ssh-through-session-manager/

脚注
  1. EC2 マネージドノードとは、AWS Systems Manager(SSM) Agent が導入されている EC2 インスタンスを指す ↩︎

noknok

Session ManagerでEC2インスタンスログイン後に、ユーザーを切り替える

AWS上の SessionManagerコンソール(もしくはローカルのAWS CLI)
# ubuntuユーザーでログイン(起動したAMIによってユーザー名が異なる)
sudo su --login ubuntu

# rootユーザーでログイン
sudo su --login

# ssmユーザーでログイン
sudo su --login ssm-user

参考

https://d.oppara.tv/posts/2022/03/aws-ssm-switch-user/

noknok

SSM上で「unzip」コマンドが使える様にする

「unzip」のインストール

AWS上の SessionManagerコンソール(もしくはローカルのAWS CLI)
sudo apt install unzip

「unzip」の使い方

AWS上の SessionManagerコンソール(もしくはローカルのAWS CLI)
unzip <ZIPファイルのパス>
# 例: unzip test.zip