EC2からのファイル転送方法【WinSCP・SCP・FTP対応】初心者向けに完全ガイド!
生徒
「AWSのEC2で作ったファイルをローカルPCにダウンロードしたいんですが、どうすればいいんでしょう?」
先生
「ファイル転送にはSCPやWinSCPなどの方法がありますよ。FTPも使えますが、少し注意が必要です。」
生徒
「使うソフトやコマンドによってやり方が違うんですか?」
先生
「はい、それぞれ特徴があります。順番に、初心者でもできるEC2からのファイル転送方法を紹介しましょう。」
1. EC2からファイルを転送する基本の考え方
AWS EC2インスタンスはクラウド上にあるため、ローカルPCとファイルをやり取りするにはセキュアな通信手段を使う必要があります。 一般的に使われるのは以下の3つです。
- SCP(Secure Copy):ターミナルからコマンドで転送
- WinSCP:Windows用のGUIツール
- FTP:設定が複雑で非推奨だが一部環境で使用可
特にLinuxやMacではSCP、WindowsではWinSCPが初心者におすすめです。以下でそれぞれ詳しく解説していきます。
2. SCPコマンドでEC2からファイルをダウンロード
SCP(Secure Copy Protocol)は、SSHを利用してファイルを安全に転送するためのコマンドです。 MacやLinux、WindowsのWSLやGit Bashでも使えます。
基本的なSCPコマンドの書き方:
scp -i ~/Downloads/my-key.pem ec2-user@203.0.113.10:/home/ec2-user/file.txt ~/Desktop/
-i:キーペアファイル(.pem)ec2-user@IP:EC2のユーザー名とパブリックIPアドレス:以降:EC2上のファイルパス- 最後:ローカルPCの保存先
転送元と転送先を逆にすれば、ローカルからEC2へのアップロードも可能です。
3. WinSCPでファイルをアップロード・ダウンロード(Windows向け)
WindowsユーザーにはWinSCPというGUIツールが便利です。 直感的な操作で、ドラッグ&ドロップでファイルの転送ができます。
WinSCPでEC2に接続する手順:
- WinSCPを起動し、プロトコルを「SCP」に設定
- ホスト名:EC2のパブリックIP
- ユーザー名:ec2-user(Amazon Linuxの場合)
- 「詳細設定」→「SSH」→「認証」で
.pemファイルを指定 - 「保存」して「ログイン」
無事に接続できると、左側がローカルPC、右側がEC2サーバーとなる画面が表示されます。あとは転送したいファイルをドラッグするだけです。
4. FTPでEC2とファイル転送するには?
FTP(File Transfer Protocol)は古くからあるファイル転送方式ですが、AWS EC2ではFTPは標準では使えません。
FTPを使うには、EC2内にvsftpdやProFTPDなどのFTPサーバーをインストールし、セキュリティグループでTCPポート21を開放する必要があります。
FTP使用時の注意点:
- デフォルトでは暗号化されていないためセキュリティリスクがある
- FTPSやSFTPなど、より安全な方法を選ぶことを推奨
初心者や業務用途であれば、FTPではなくSCPやSFTP(WinSCP)を使うのが安心です。
5. ファイル転送で接続できないときの対処法
Q. Permission denied エラーが出る
A. .pemファイルの権限が適切でないとSCP接続できません。次のコマンドで権限を修正してください。
chmod 400 ~/Downloads/my-key.pem
Q. 接続タイムアウトになる
A. セキュリティグループのインバウンドルールに「ポート22(SSH)」が開放されているか確認してください。
Q. WinSCPで接続エラーになる
A. キーペア(.pem)指定が正しいか、ユーザー名やIPアドレスが間違っていないかを確認しましょう。
6. 転送速度を劇的に上げる!S3を経由したファイル転送
数百MBを超えるような大容量ファイルや、大量の画像データを転送する場合、SCPやWinSCPでは時間がかかりすぎることがあります。そんな時は、一度Amazon S3(ストレージサービス)を経由させるのが2026年現在の賢いやり方です。
EC2からS3へアップロードし、ローカルPCからS3のファイルをダウンロードするという手順を踏みます。AWSの内部ネットワークを利用するため、直接転送するよりも安定して高速に処理できます。
# EC2からS3バケットへフォルダごとバックアップする例
aws s3 sync /home/ec2-user/my-data/ s3://my-backup-bucket/
この方法を使うには、EC2インスタンスにS3操作用のIAMロールを付与しておく必要があります。セキュリティを保ちつつ、効率的に大容量データを扱うための必須テクニックです。
7. JavaプログラムからEC2へ自動ファイル転送する方法
手動での転送ではなく、システムの一部としてJavaプログラムからファイルを送りたいたい場合もあります。未経験の方でもイメージしやすいように、JSch(Java Secure Channel)などのライブラリを使って「ファイルを送信する」疑似コードを紹介します。
public class FileUploader {
public static void main(String[] args) {
String host = "203.0.113.10"; // EC2のIPアドレス
String user = "ec2-user";
String privateKey = "my-key.pem";
System.out.println("--- ファイル転送処理を開始 ---");
System.out.println("接続先: " + host);
// 実際にはライブラリを使用してSSH接続し、ファイルを送ります
boolean isSuccess = true;
if (isSuccess) {
System.out.println("結果: ファイルのアップロードに成功しました!");
}
}
}
--- ファイル転送処理を開始 ---
接続先: 203.0.113.10
結果: ファイルのアップロードに成功しました!
このようにプログラム化することで、毎日決まった時間にログファイルを回収したり、バックアップを自動化したりすることが可能になります。
8. ファイル転送時のセキュリティ・ベストプラクティス
クラウド上のサーバーとファイルをやり取りする際、最も気をつけなければならないのが「認証情報の漏洩」です。安全に運用するためのポイントをまとめました。
- キーペア(.pem)の管理: キーペアは絶対にGitHubなどの公開場所にアップロードしないでください。万が一漏洩すると、誰でもサーバーにフルアクセスできてしまいます。
- IP制限の徹底: セキュリティグループの設定では、SSH/SCP用の22番ポートを「0.0.0.0/0(全開放)」にせず、必ず「自分のIPアドレス」だけに制限しましょう。
- 一時ファイルの削除: 転送が終わった後、EC2上の
/tmpフォルダなどに残した一時ファイルは速やかに削除する習慣をつけましょう。
これらの対策を行うことで、外部からの攻撃リスクを最小限に抑えながら、安全なファイル転送環境を維持することができます。
まとめ
AWS EC2からのファイル転送方法について、SCP、WinSCP、そしてFTPの3つの手法を比較しながら解説しました。特に初心者にとって重要なのは、どの方法が自分の環境に合っていて、安全にファイル転送できるかという点です。
SCPはMacやLinux、Git Bashなどターミナル操作に慣れている人に向いており、シンプルでセキュアなファイル転送が可能です。一方、Windows環境のユーザーにはGUIで操作できるWinSCPが便利で、ドラッグ&ドロップによる直感的なファイル操作が魅力です。
FTPは一見簡単そうに見えますが、AWSでは初期状態で使えず、FTPサーバーの導入やセキュリティ設定が必要になるため、セキュリティリスクが高く初心者には推奨されません。可能であればSFTPまたはWinSCPの使用が望ましいです。
また、接続できない場合のエラー対策も大切です。.pemファイルの権限設定やセキュリティグループの構成、IPアドレスの確認といった基本事項を押さえておけば、スムーズにファイル転送を行うことができます。
今後、EC2インスタンスを使った開発や運用を行う際には、今回学んだファイル転送の知識が非常に役立ちます。ファイルの送受信は、デプロイ作業やバックアップ作業の基礎となるため、操作に慣れておくことがAWS初心者からのステップアップに繋がります。
以下は、SCPでEC2にファイルをアップロードする例です:
scp -i ~/Downloads/my-key.pem ~/Desktop/myfile.txt ec2-user@203.0.113.10:/home/ec2-user/
このように、転送元と転送先を入れ替えるだけでアップロードも簡単に行えます。
生徒
「EC2とローカルPC間のファイル転送って、想像よりも簡単なんですね!」
先生
「そうですね。ポイントはセキュリティを意識しながら、正しい手順で転送することです。SCPやWinSCPをマスターすれば、デプロイも楽になりますよ。」
生徒
「次はSCPスクリプトを自動化することにも挑戦してみたいです!」
先生
「素晴らしいですね。cronやバッチ処理と組み合わせれば、バックアップやデプロイの自動化もできますよ。」