1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS SessionManager の SSH接続を使いやすくする

Last updated at Posted at 2024-10-24

前置き

  • SessionManagerを用いたSSH接続が利用できる環境
  • AWSアカウント複数持ちで、プロファイル毎に管理している場合
  • InstanceIDが動的で、いちいち調べるのが面倒な場合
  • とりあえず、同ネームタグの起動しているどのサーバーでもいいから接続したい場合

InstanceIDを調べずに、サーバー接続できるスクリプトのご紹介です。
このスクリプトを設定したら以下のコマンドだけでssm接続できます。

> ssh ssm.[プロファイル名].[ネームタグ名]

設定方法

(Git For Windows の GitBashで検証しました。クライアント環境に合わせて調整してください)

■ 1. ファイルを配置する

[ユーザー]/bin/ フォルダに以下のコードをファイルとして配置する。
※パスの通ったフォルダであればどこでも大丈夫です。

ファイル名:aws-ssm.sh
#!/bin/bash

# AWS-SSM ProxyCommand
# Configure to ssh_config
# 
# ------------------------------
# Host ssm.*
#	ProxyCommand aws-ssm.sh %h %p
#   User ec2-user
# ------------------------------
#
# SSH Command: ssh ssm.[Profile].[NameTag]

HOST_STR=$1
HOST_ARR=(${HOST_STR//./ })
INSTANCE_ID=$(aws --profile ${HOST_ARR[1]} ec2 describe-instances --filters "Name=tag-value,Values=${HOST_ARR[2]}" "Name=instance-state-name,Values=running" --query "Reservations[0].Instances[0].InstanceId")
INSTANCE_ID=${INSTANCE_ID//\"/}
aws ssm start-session --profile ${HOST_ARR[1]} --target ${INSTANCE_ID} --document-name AWS-StartSSHSession --parameters "portNumber=$2"

■ 2. configファイルを追記する

[ユーザー]/.ssh/config ファイルに以下の記述を追記する

Host ssm.*
    ProxyCommand aws-ssm.sh %h %p
    User ec2-user

ユーザー・ポートや鍵の指定等は環境に合ったものへオーバーライド等して下さい。

Host ssm.[プロファイル名].*
    <<その他設定>>

注意事項

「.」ドット区切りで分割しているので、既にプロファイル名やネームタグにドットが含まれる場合は別な記号で分割する様に調整が必要となります。

もっと効率のいいものがあれば教えて下さい。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?