ステップ 8: (オプション) Session Manager を通じて SSH 接続を有効にする - AWS Systems Manager

ステップ 8: (オプション) Session Manager を通じて SSH 接続を有効にする

AWS アカウントのユーザーが AWS コマンドラインインターフェイス (AWS CLI) を使用して、Session Manager でインスタンスへのセキュアシェル (SSH) 接続を確立できます。SSH を使用して接続するユーザーは、Secure Copy Protocol (SCP) を使用してローカルマシンとマネージドインスタンス間でファイルをコピーすることもできます。この機能を使用すると、インバウンドポートを開いたり、要塞ホストを維持したりせずにインスタンスに接続できます。Session Manager を介してインスタンスへの SSH 接続を明示的に無効にすることもできます。

注記

ログ記録は、ポート転送または SSH を介して接続する Session Manager セッションでは使用できません。これは、SSH はすべてのセッションデータを暗号化し、Session Manager は SSH 接続のトンネルとしてのみ機能するためです。

Session Manager を介して SSH 接続を有効にする

  1. SSH 接続を有効にするマネージドインスタンスで、次の手順を実行します。

  2. SSH を使用してマネージドインスタンスに接続するローカルマシンで、次の手順を実行します。

    • Session Manager プラグインのバージョン 1.1.23.0 以降がインストールされていることを確認します。

      Session Manager プラグインのインストールについては、「(オプション) AWS CLI 用の Session Manager プラグインをインストールする」を参照してください。

    • SSH 設定ファイルを更新して、Session Manager セッションを開始し、接続を介してすべてのデータを転送するプロキシコマンドを実行できるようにします。

      Linuxと macOS

      Linux

      ヒント

      SSH 設定ファイルは通常 ~/.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'"

      Windows

      ヒント

      SSH 設定ファイルは通常 C:\Users\username\.ssh\config にあります。

      ローカルマシンの設定ファイルに以下を追加します。

      # SSH over Session Manager host i-* mi-* ProxyCommand C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters portNumber=%p"
    • マネージドインスタンスへの接続を確立するときに使用する Privacy Enhanced Mail 証明書 (PEM ファイル) または少なくともパブリックキーを作成または確認します。これは、インスタンスにすでに関連付けられているキーでなければなりません。例えば、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスの場合、インスタンスの作成時に作成または選択したキーペアファイルです。(セッションを開始するには、コマンドの一部として証明書またはキーへのパスを指定します。SSH を使用してセッションを開始する方法については、「セッションの開始 (SSH)」を参照してください。)

Session Manager を介して SSH 接続を有効にする IAM ポリシー

  • オプション 1: IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。ナビゲーションペインで [Policies] (ポリシー) を選択し、Session Manager を介した SSH 接続の開始を許可するユーザーまたはロールのアクセス許可ポリシーを更新します。例えば、「Session Manager のクイックスタートエンドユーザーポリシー」で作成したユーザークイックスタートポリシーを変更する準備をします。以下の要素をポリシーに追加します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:StartSession", "Resource": [ "arn:aws:ec2:region:987654321098:instance/i-02573cafcfEXAMPLE", "arn:aws:ssm:*:*:document/AWS-StartSSHSession" ] } ] }

    オプション 2: AWS マネジメントコンソール、AWS CLI、または AWS API を使用して、インラインポリシーをユーザーポリシーにアタッチします。

    任意の方法を使用して、オプション 1 のポリシーステートメントを AWS ユーザー、グループ、またはロールのポリシーにアタッチします。

    詳細については、IAM ユーザーガイド の「IAM ID アクセス許可の追加と削除」を参照してください。

Session Manager を介して SSH 接続を無効にする IAM ポリシー

  • オプション 1: IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。ナビゲーションペインで [Policies] (ポリシー) を選択し、ユーザーまたはロールのアクセス許可ポリシーを更新して、Session Manager セッションの開始をブロックします。例えば、「Session Manager のクイックスタートエンドユーザーポリシー」で作成したユーザークイックスタートポリシーを変更する準備をします。次の要素をポリシーに追加するか、ユーザーがセッションを開始するのを許可するアクセス許可を置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor1", "Effect": "Deny", "Action": "ssm:StartSession", "Resource": "arn:aws:ssm:*:*:document/AWS-StartSSHSession" } ] }

    オプション 2: AWS マネジメントコンソール、AWS CLI、または AWS API を使用して、インラインポリシーをユーザーポリシーにアタッチします。

    任意の方法を使用して、オプション 1 のポリシーステートメントを AWS ユーザー、グループ、またはロールのポリシーにアタッチします。

    詳細については、IAM ユーザーガイド の「IAM ID アクセス許可の追加と削除」を参照してください。