【AWS】WinSCPからSSMセッションマネージャー経由でEC2にファイルアップロードする方法

その他

はじめに

「SSHは使いたくない」でも「EC2に安全にファイルをアップロードしたい」という場合に使えるのが、AWS Systems Manager(SSM)※以下SSMとWinSCPを組み合わせた方法です。
この方法なら、SSHポート(22番)を開けずに済み、サーバ側の公開設定を最小限にできるというメリットがあります。

全体構成

この構成では、ローカルPCからEC2に直接SSH接続するわけではありません
代わりに、SSMを使って、ポートフォワーディングを作成します。
こうすることでWinSCPがあたかも「SSH接続しているかのように」EC2に接続できます。

前提条件

項目 説明
EC2にSSM Agentインストール済み Amazon Linux2は標準搭載
IAMロール付与済み AmazonSSMManagedInstanceCore ポリシーが必要
セキュリティグループ SSH接続なしのため22番ポート開放不要
AWS CLI(v2)インストール済み ローカルPCへインストール
Session Manager Plugin インストール済み ポートフォワーディングで使用
WinSCP インストール済み

AWS・EC2側の設定(事前準備)

WinSCPでSSM経由の接続を行うには、EC2インスタンスにも事前に準備が必要です。

1. SSM Agent のインストール

Amazon Linux 2 / Ubuntu の最新バージョンなどにはデフォルトでインストール済みですがその他のOSの場合は、手動でのインストールが必要になります。

2. IAMロールの割り当て

対象のEC2インスタンスに対しては、SSMへの接続権限を持つIAMロールをアタッチする必要があります。簡単な手順を紹介します。
必要なIAMポリシー: AmazonSSMManagedInstanceCore

割り当て手順
  1. AWSマネジメントコンソールで IAMロールを作成

  2. 上記ポリシーをアタッチ

  3. EC2のインスタンスにそのIAMロールをアタッチ

WinSCPでの接続手順

1. SSM ポートフォワーディングを開始

まず、以下コマンドを実行してSSM経由でポートフォワーディングを開始します。

aws ssm start-session \
--target EC2インスタンスID \
--document-name AWS-StartPortForwardingSession \
--parameters '{"portNumber":["22"],"localPortNumber":["2200"]}'
このコマンドで、ローカルの2200番→ EC2の22番ポートにトンネルが作られます。

2. WinSCPの接続設定

WinSCPを起動し、以下のように設定します。

設定項目 入力内容
転送プロトコル SCP または SFTP(どちらでもOK)
ホスト名 127.0.0.1
ポート番号 2200
ユーザー名 ec2-user など(OSに応じる)
認証 秘密鍵設定またはパスワード

これで「接続」をクリックすると接続でき、ファイルのアップロードやダウンロードが可能になります。

まとめ

WinSCPからSSM経由でEC2にファイルをアップロードする方法を紹介しました。SSMは、EC2との接続にSSHを使わないという選択肢の一つになりますね。WinSCPのようなツールとも組み合わせることでGUIでのファイル操作もできるので、ぜひ活用してみてください!

タイトルとURLをコピーしました