テックブログ

WindowsのWinSCPよりSFTP接続できるAWS Systems Managerにて利用方法

はじめに

こんにちは Pです。

自分のパソコンからPrivateサブネットにあるEC2インスタンスに接続し、ファイル転送したい…

そんなときに便利なのが AWS Systems Manager Session Manager (SSM) を “トンネル” として使い、WinSCP でSFTP/SCP 接続する方法です。
この構成ならインバウンドの SSH ポートを閉じたまま、WinSCP の使い慣れた GUI でアップロードやダウンロードができます。

前提条件

EC2

  • SSM Agent が導入済み
  • インスタンスプロファイル(IAM ロール)にAmazonSSMManagedInstanceCoreなど必要権限を付与
  • SSHサーバー(sshd)が動作していること(ポートは開放不要)

自分のPC

  • AWS CLI 最新版
  • Session Manager Plugin 最新版
  • WinSCP最新版
  • EC2 インスタンスにログインできる OS ユーザー名秘密鍵(OpenSSH 形式 or PuTTY .ppk。必要に応じて WinSCPで変換)

実装・設定ガイド

WinSCPのLocal proxy command 方式

WinSCPが裏でaws ssm start-sessionを実行し、インスタンス IDをホスト名としてSFTP接続します。

1) 準備(初回のみ)

  • AWS CLISession Manager plugin をインストールし、aws --versionsession-manager-plugin --version が出ることを確認。

PS C:\WINDOWS\system32> aws --version
aws-cli/2.25.1 Python/3.12.9 Windows/11 exe/AMD64
PS C:\WINDOWS\system32>
PS C:\WINDOWS\system32> session-manager-plugin --version
1.2.707.0
PS C:\WINDOWS\system32>

  • AWS CLI の認証及びプロファイル設定(aws configure など)は完了させておきます。

#AWS CLI の認証

C:\Users\ユーザ名\.aws\credentials

[default]
aws_access_key_id = AKIAW...
aws_secret_access_key = e/ZDVJPfoT0ZDEiDpCib6mX...

#プロファイル設定

PS C:> aws configure --profile your_profile
AWS Access Key ID [None]: AKIAVO4...
AWS Secret Access Key [None]: Etps7428yjmaUWUyT9Z0e...
Default region name [None]: ap-northeast-1
Default output format [None]: json

$PROFILE_NAME = 'your_profile'
$INSTANCE_ID = 'i-0abc123...'
aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortForwardingSession
--parameters '{\"portNumber\":[\"22\"],\"localPortNumber\":[\"22000\"]}' `
--profile $PROFILE_NAME

2) WinSCP のサイト設定

  • WinSCP を起動 → 新しいサイト
    • 転送プロトコル:SFTP
    • ホスト名:接続したい EC2 のインスタンス ID(例:i-0abc123...
    • ポート番号:22
    • ユーザー名:ec2-user/ubuntuなどAMIに応じて
  • [設定]→ 高度なサイト設定 → 接続 → プロキシ
    • プロキシ形式:ローカル
    • ローカルプロキシコマンド
      • aws ssm start-session --target %host --document-name AWS-StartSSHSession --parameters "portNumber=%port" --profile "your_profile"
  • SSH の認証で秘密鍵 .ppk を指定 → 保存 → ログイン

これでEC2インスタンスに接続することができました。

おわりに

WinSCP及びSSMで、22/TCPを閉じたままプライベート EC2にSFTP接続が可能でございます。必要なら、貴社環境のプロファイル名・ホスト名・ユーザー名などに合わせて設定してみましょう。

この記事をシェアする

  • facebook
  • twitter
  • hatena
  • line
URLとタイトルをコピーする

実績数30,000件!
サーバーやネットワークなど
ITインフラのことならネットアシストへ、
お気軽にご相談ください