LoginSignup
3
0

More than 1 year has passed since last update.

踏み台無しで SSH over Session Manager してみたかったので試した

Last updated at Posted at 2021-12-23

やりたかった事

  • VPC private subnetで起動しているセキュアなEC2インスタンスにVPC外からSSHで接続したい
  • インターネットに面する踏み台サーバーを用意したり、ポート解放はしたくない

前提

ec2側

  • ec2 はAmazonlinux2で作成
  • ec2 にssm-agent 最新版を導入済み
  • ec2 インスタンス自体はPrivat subnetにあってインターネットからアクセス不可能であっても、natgatewayやvpcエンドポイント経由でSSMエンドポイントにアクセス可能である
  • ec2 作成時に指定した ec2-user のキーペア秘密鍵などssh接続に必要な情報は手元にある。
  • ec2 のsshdでは鍵認証での接続が可能な状態にある

作業者端末側

  • 接続元の端末は今回は macを使用して検証した
  • 接続したいec2のインスタンスID、ユーザー名、接続用の鍵の情報は確保済み。
  • aws cli環境は整備済みで使える状態にある。

という状態からレッツトライ

まずは公式の情報源

やった事

1. EC2 に付与している インスタンスプロファイルの設定確認

  • インスタンスプロファイル内に AmazonSSMManagedInstanceCore ポリシーがあるか。
  • なければ追加する。

2. 手元の端末で .ssh/config に公式のDocから設定をコピペして追加

  • ~/.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'"

3. 手元の端末から sshで接続

  • 接続したいEC2インスタンスのインスタンスIDを確認する。マネジメントコンソールでもcliでも好きな方法で。
  • sshコマンドで osのユーザー名、インスタンスID、ユーザーの秘密鍵を使って接続。やったね。
$ ssh ec2-user@<i-から始まるインスタンスID> -i <秘密鍵>

おま環で少しハマったところ

  • aws cli 利用時に profileを指定する必要があったので ~/.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' --profile <profile名>"

参考にした記事

その他

  • IAMの設定でポリシーでアクセスを許可するインスタンス制御もできるっぽい。

感想

  • 思ったより簡単に実現できてとてもよかった。満足
3
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
3
0