はじめに
「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
割り当て手順
-
AWSマネジメントコンソールで IAMロールを作成
-
上記ポリシーをアタッチ
-
EC2のインスタンスにそのIAMロールをアタッチ
WinSCPでの接続手順
1. SSM ポートフォワーディングを開始
まず、以下コマンドを実行してSSM経由でポートフォワーディングを開始します。
aws ssm start-session \
--target EC2インスタンスID \
--document-name AWS-StartPortForwardingSession \
--parameters '{"portNumber":["22"],"localPortNumber":["2200"]}'
2. WinSCPの接続設定
| 設定項目 | 入力内容 |
|---|---|
| 転送プロトコル | SCP または SFTP(どちらでもOK) |
| ホスト名 | 127.0.0.1 |
| ポート番号 | 2200 |
| ユーザー名 | ec2-user など(OSに応じる) |
| 認証 | 秘密鍵設定またはパスワード |
これで「接続」をクリックすると接続でき、ファイルのアップロードやダウンロードが可能になります。
まとめ
WinSCPからSSM経由でEC2にファイルをアップロードする方法を紹介しました。SSMは、EC2との接続にSSHを使わないという選択肢の一つになりますね。WinSCPのようなツールとも組み合わせることでGUIでのファイル操作もできるので、ぜひ活用してみてください!




