EC2インスタンスへのシェルアクセスサービスを雑にまとめてみた

115件のシェア(ちょっぴり話題の記事)

過去1年の間にEC2インスタンスにシェルアクセスするAWSサービスが3つもリリースされました。

  • AWS Systems Manager Session Manager(2018/09/11)
  • EC2 Instance Connect(2019/06/27)
  • AWS Systems Manager Session Manager(SSHトンネリング対応)(2019/07/09)

機能が似通っていており、違いがわかりにくいため、ざっと整理しました。

シェルアクセスの比較表

サービス 素のSSH Systems Manager Session Manager Systems Manager Session Manager(SSH) EC2 Instance Connect
概要 SSHクライアントを使って、インスタンスに接続。 インスタンスにシェルアクセス。アクセス制御にはIAMポリシーを使用。
ログイン処理が行われないため、一部独特な動き)
SSM Session Manageセッション上にSSHトンネルを作成。アクセス制御にはIAMポリシーを使用。 SSHクライアントを使って、インスタンスに接続。
SSHキーは接続ごとに登録し、60秒だけ有効。
アクセス制御にはIAMポリシーを使用。
ドキュメント url url url url
ブログ - url url url
プロトコル SSH HTTPS SSH over HTTPS SSH
SSHキー管理 必要 不要 必要 必要
(接続時に都度作成・登録)
認証 SSH IAM IAM+SSH IAM+SSH
CloudTrail履歴 - 残る 残る 残る
セッション操作履歴 - 残る - -
コンソール・アクセス - 可能 可能 可能
コマンドライン・アクセス 可能 可能 可能 可能
プライベートサブネット 踏み台経由 可能 可能 踏み台経由
インバウンドポート管理 SSH用ポートをあける 不要 不要 SSH用ポートをあける
クライアント要件 SSH AWS CLI
Session Managerプラグイン
SSH
AWS CLI
Session Managerプラグイン
SSH
AWS CLI
EC2 Instance Connect CLI
サーバー要件 SSH SSM Agent SSM Agent
SSH
OS:Amazon Linux 2/Ubuntu 16.04+
SSH

ユースケース別おすすめ

プライベートサブネットのインスタンスにも接続したい

Systems Manager Session Manager 系 を採用すると、踏み台サーバーを経由せずに接続可能です。

アウトバウンドのSSH通信が禁止されている

HTTP(S) 通信のみで可能な Systems Manager Session Manager 系をご利用ください。

SSH 版 Session Manager も HTTPS ベースの Session Manager セッション上で実現されており、クライアントがサーバーと直接 SSH 通信しているわけではありません(なのでSSH用インバウンドポートを開けなくて良い)。

番外編として、パブリックサブネットに踏み台用 AppStream 2.0インスタンスを起動し、そこから各サーバーに接続することも可能です。HTTPS 通信のみを利用します。

シェルの操作履歴を残したい

Systems Manager Session Manager(非SSH)を利用すると、操作履歴を CloudWatch/S3 に残す事ができます

ファイル転送が必要

シェルアクセスだけでなく、サーバーとファイルの送受信をしたい場合、SSH 系ソリューションをご利用ください。

SSHトンネリングが必要

クライアント環境からVPCのプライベートサブネットにあるRDSに接続したい時があるかもしれません。

そのようなときは、SSH 系ソリューションで SSH トンネルを堀り、ポートフォワードをご利用ください。

永続的なSSHキーを使いたくない

永続的なSSHキーを使いたくない場合

  • Systems Manager Session Manager(非SSH) (IAM 認証)
  • EC2 Instance Connect (ラッパー CLI の mssh を使うと、毎回新規SSHキーを作成&登録)

をご利用ください。

Red Hat で利用したい

EC2 Instance Connect は Red Hat に対応していないため、Systems Manager Session Manager 系をご利用ください。

最後に

AWS が提供する3種類のEC2へのシェルアクセスサービス

  • AWS Systems Manager Session Manager
  • AWS Systems Manager Session Manager(SSHトンネリング)
  • EC2 Instance Connect

の違いを整理しました。

要件に応じて使い分けていただければと思います。