はじめに
こんにちは!
この記事では、FTP(File Transfer Protocol)について、初心者の方にもわかりやすく解説します。
具体的には、本記事では以下の3つをわかりやすく解説していきます。
- FTPの基本的な概念
- WindowsサーバーでのFTP設定方法
- WinScp、コマンドプロンプトを使ったFTP接続の方法
FTPとは?
FTPは「File Transfer Protocol(ファイル転送プロトコル)」の略で、ネットワーク上でファイルを送受信するための仕組みです。
- パソコンからサーバーにファイルをアップロードしたり、
- サーバーから必要なファイルをダウンロードしたり
といったことが、FTPを使うことで簡単にできるようになります。

今回のゴールは、下記の通りです。
- Windows Server 2022でFTPサーバーを構築
- Windows 11 Enterpriseから接続して動作確認を行う
初心者の方にも可能な限りわかりやすく解説していきますので、一緒にやっていきましょう!
なお、今回はVirtual box上に上記windows検証環境を用意して、設定を行っていきます。もし、virtual boxを構築したことがない方は下記記事を参考にしてみてください。
Windows ServerでのFTPサーバー設定手順
IISとFTPサーバー機能のインストール
- IISとFTPサーバー機能のインストール
まずはサーバーマネージャーから、「役割と機能の追加」をクリック

そのまま「次へ」をクリック

「役割ベースまたは機能ベースのインストール」を選択し、「次へ」をクリック

対象のサーバーを選択します。選択したら「次へ」をクリック
※本ブログの場合は下記ホスト名のサーバーを選択しています。環境によって異なりますので
ご自身のサーバー名を確認した上で進めてください

サーバーの役割で「Webサーバー(IIS)」を選択。

「Webサーバー(IIS)に必要な機能を追加しますか?」と出たら「機能の追加」を選択。

「機能の追加」をクリックすると、IISにチェックが入りますので、「次へ」をクリック。

機能の選択では、特に追加の必要がなければそのまま「次へ」。

「Webサーバーの役割(IIS)」画面ではそのまま「次へ」。

「役割サービスの選択」で下記のチェックを入れます:
- FTP サーバー
- FTP サービス
※FTPサーバーにチェックを入れると、FTPサービスも自動でチェックが入ります。

内容を確認して「インストール」で完了です。

インストールの進行状況が表示されます。

「インストールが正常に完了しました」と表示されればOKです!

インストールが完了したら、IISが正しく動作しているか確認しましょう。
ブラウザを開いて、アドレスバーに「http://localhost」と入力します。
下記のようなIISのスタート画面が表示されれば、Webサーバー機能が正常に動いています。

FTPユーザーの作成
FTP接続には、Windows Server側で認証されるローカルユーザーが必要です。
「ファイル名を指定して実行」(Win+R)で compmgmt.msc と入力し、Enter。

ファイル名を指定して実行について、よく知らない方は下記記事をご確認ください。
[ローカルユーザーとグループ] → [ユーザー] をクリック。

右側の空白部分を右クリック → [新しいユーザー] を選択。

任意のユーザー名・パスワードを入力(例:FTP_User)。
「パスワードを無期限にする」にチェックを入れてもOKです。

作成後、一覧にユーザーが追加されていることを確認します。

FTP用のディレクトリ作成
FTPでファイルをやりとりするための専用フォルダを作成し、先ほど作成したユーザーにアクセス権を付与します。
C:\ 配下に FTP フォルダを作成します。

フォルダを右クリック → [プロパティ] を開きます。

[セキュリティ] タブを開き、[編集] をクリック。

[追加] をクリックして、ユーザーを指定します。

オブジェクト名に FTP_User を入力し、「名前の確認」で正しく認識されることを確認して「OK」。

※名前の確認で正しく認識された場合、下記画像の通り
「PC名 ¥ ユーザー名」にて表示されます。

FTP_User に「読み取り」「書き込み」などのアクセス権を付与して「OK」。

FTPサイトの作成
これからFTPサイトの設定をしていきますが、そもそもFTPサイトがわからない方向けに補足説明をしたいと思います。
FTPサイトは「ファイルを置いたり、持って帰ったりできる特別なフォルダ」のことを指します。
今回の例では、IISのサーバー内の「FTP」というフォルダーが該当します。同ネットワークを通じて、ほかのユーザーせもアクセス可能です。
「FTPサイト」は、例えるなら「学校の荷物置き場」のようなものです。
たとえば学校の中にこんな部屋があると想像してみてください。
生徒たちが自由にプリントを置いたり、取りに来たりできる部屋でも、ちゃんと「カギ(パスワード)」がないと入れないし、先生が「この子は見るだけOK」「この子は置いてもOK」ってルールを決めてる部屋をイメージしてください。
誰が | なにをする? | たとえで言うと |
---|---|---|
クライアント(使う人) | ファイルをアップロード | プリントを置く |
クライアント(使う人) | ファイルをダウンロード | プリントを取りに行く |
でも、「だれでも勝手に入れる」わけじゃなくて、
- ユーザー名とパスワード(鍵)
- 先生(管理者)が決めたルール(アクセス権)
この2つがあって、決められた人だけが正しく使える仕組みになっています。
これをPCの世界に当てはめるとFTPサイトが該当します。
話は脱線しましたが、設定手順に戻りましょう。
[IISマネージャー] を開きます。

左ペインから [サイト] を右クリック → [FTP サイトの追加] を選択。

以下の情報を入力:
サイト名:FTP_SITE
物理パス:C:\FTP(※任意の共有フォルダー)

バインドとSSL設定:
IPアドレス:すべて未割り当て(または特定アドレス)
SSL:今回は「SSLなし」を選択(※本番環境では要設定)

認証と承認情報:
認証:基本
アクセス許可:指定ユーザー(例:Administrator)
権限:読み取り / 書き込み を付与

下記画像の通り、IISマネージャー上に先ほど作成した「FTP」サイト名が表示されていれば、設定は完了です。

Windowsファイアウォールの設定
早速、windowsファイアーウォールの設定を行っていきますが、FTPの通信について少し補足説明を行っていきたいと思います。
不要な方はここは読み飛ばしてください。
FTPは「2つの通信」を使います
- 制御用の通信(コマンドのやり取り)
- 常に ポート21 を使います(サーバー側)
- データ転送用の通信(ファイルのやり取り)
- → このとき ポート20を使うかどうかは“モード”次第”!
FTPではデータ用の通信を行う際に2つのモードをどちらかを選ぶ必要があります。
モード | データポート | 使い方 |
---|---|---|
アクティブモード | サーバーの ポート20 を使用 | サーバーがクライアントに接続しにいく |
パッシブモード | サーバーが指定するランダムな高ポートを使用 | クライアントがサーバーに接続しにいく |
アクティブモード
- クライアント → サーバーに ポート21 で接続(制御)
- サーバー → クライアントの任意ポートへ ポート20から接続(データ)
→ このときだけポート20が使われます!
パッシブモード
- クライアント → サーバーの ポート21 に接続(制御)
- クライアント → サーバーの 指定されたポート(例:50000番台) に接続(データ)
→ ポート20は使われません。
今回は、パッシブモードにてwindowsファイアーウォールの設定を行っていきます。
FTPサーバー(IIS)でパッシブポート範囲を設定
まず、Windows Server上のIIS FTPサーバーでパッシブモードに使用するポート範囲を指定します。
既定ではFTPサーバーは1024~65535の空きポートをデータ通信に使用できますが、任意の範囲に制限することが可能です。
「インターネット インフォメーション サービス (IIS)マネージャーの左ペインでサーバー名を選択し、中央ペインの 「FTP ファイアウォールのサポート」アイコンをダブルクリックします。

パッシブポート範囲を入力 – 「FTPファイアウォールのサポート」画面で、「データ チャネルのポート範囲」にパッシブモードで使用するポート範囲を指定します。
今回は、FTPのデータ通信用に下記ポートを指定しています。
ポート番号範囲:2000-2010
数値を入力し終わったら、下記画像の通り、右ペインの適用をクリックします。

クリックすると、下記画面が表示されますが、そのままOK選択してください。

FTPサービスの再起動
パッシブポート範囲の設定を反映させるため、FTPサービスを再起動します。
サーバーマネージャーの「ツール」から「サービス」を開ます。

一覧から 「Microsoft FTP Service」を選択して再起動してください。これでFTPサーバー側のパッシブポート範囲の指定が完了です。

WindowsファイアウォールでFTP用の受信規則を有効化
IIS側でFTPサービスの設定ができたら、Windows Defender ファイアウォール(高度なセキュリティ)でFTP通信に必要な受信ポートを解放します。
Windows Server 2022 にはFTP用の受信規則があらかじめ定義されているため、新規に作成することなくFTPの通信は行えてしまいますが、今回は検証用なのでWindowsファイアーウォールの設定も行っていきましょう。
[サーバーマネージャー] から Windows Defender Firewall を起動
「ツール(T)」 > 「セキュリティが強化された Windows Defender ファイアウォール」を選択

現在アクティブになっているプロファイルを確認します。
本ブログでは、「プライベート」を有効にしています。

ちなみにWindowsのファイアウォールについて詳しく知りたい方は下記記事でもWindowsファイアーウォールについて解説しています。

既存で許可されているFPTサーバパッシブの規則をダブルクリックします。

下記画像の通り、有効のチェックを外し、OKをクリックします。

[受信の規則] の「新しい規則」を選択

3. 規則の種類: 「ポート」を選択
TCP/UDP ポートの接続を制限する規則を作成

4. プロトコルとポート:
- TCP
- 特定のローカルポート:
2000-2010

5. 操作: 「接続を許可する」を選択

6. プロファイル: すべてにチェック
(ドメイン / プライベート / パブリック)

7. 名前: ルール名を入力
例: FTPデータ通信用ポート
そして「完了」をクリック

8. 規則が設定されたことを確認
FTPのパッシブ通信が指定したポート範囲にのみ制限されることを確認

Windows 11からFTP接続
では早速動作確認をしていきましょう。
Windows 標準の FTP クライアント(コマンドプロンプトで使う ftp
コマンド)は、パッシブモードに対応していません。
その為、今回はWinSCPを用いて、動作確認を行っていきます。
もし、Win SCPを使ったことがない方はダウンロードリンクを下記に載せておきますので、よろしければご利用ください。
※インストールは自己責任でお願いします。
アクセスすると、下の方にdownloadボタンをクリックするとインストーラーをダウンロードできます。
あとはインストーラーを実行して、ウィザードに従ってインストールしてください。

WinSCPで接続
WinSCPを立ち上げてください。
そうするとログイン画面にて新しいサイトが表示されます。
- 転送プロトコルの選択
- 転送プロトコル:FTP を選択
- 暗号化:暗号化なし を選択
- 通常のFTP(暗号化されていない)接続を行います。
- ホスト情報の入力
- ホスト名 (H):10.0.2.10
→ 接続先のFTPサーバーのIPアドレスまたはドメイン名を入力します。
- ホスト名 (H):10.0.2.10
- ポート番号:21
- FTPの標準ポート番号(21)を使用。
- ユーザ情報の入力
- ユーザ名 (U):FTP_User
FTP用のユーザーで作成したユーザー名を入力 - パスワード (P):●●●●●●●(伏せ字)
FTP用のユーザー用で設定したパスワードを入力
- ユーザ名 (U):FTP_User
- 接続の保存(任意)
「保存」をクリックすると、この接続設定を保存でき、次回から簡単に接続できます。 - ログインボタンをクリック
画面下部の「ログイン」ボタン(緑色アイコン)をクリックして、接続を開始します。

FTP接続が完了しますので、windowsクライアント側でテスト用のファイルを作成してください。
本ブログの場合は、デスクトップに「test.txt」を作成しました。
任意のファイルをWinSCPの画面にドラッグ&ドロップしてください。

下記画像が表示されますので、OKを選択します。

FTPでのデータ転送が問題なく完了すると、WinSCP上にアップロードしたファイルが確認できます。

サーバー側のFTPフォルダー内にも確認すると、先ほどアップロードしたtest.txtが確認できます。

FTP接続後のポート確認手順と解説
ここからは、さらに細かく確認したい方向けの解説です。
サーバー側でコマンドプロンプトを立ち上げて、下記コマンドを入力してください。
netstat
このコマンドは、現在のPCで確立されているすべてのTCP/UDP接続の状態を一覧表示するものです。
入力すると、下記画像の通り、接続状況が一覧表示されます。
ローカルアドレスがサーバー側になります。下記を確認してみるとポートがそれぞれ下記のように割当たっていることを確認できます。
- FTPコントロール:21
- データ転送用:2000,2009

以上で動作確認は完了になります。
おまけ:コマンドプロンプトで接続(CLI)
ここからはおまけのセクションになります。コマンドプロンプトでもFTPはアグレッシブモードであれば利用できます。
Windowsのコマンドプロンプトを開き、以下のコマンドを入力します:
ftp
これでFTPクライアントが起動します。

② サーバーに接続する
FTPクライアントが起動したら、以下のコマンドでサーバーに接続します:
open サーバーのホスト名またはIPアドレス
本ブログの例で言えば:
open ftp 10.0.2.10

③ ログインする
接続後、ユーザー名とパスワードの入力を求められます。それぞれ入力してEnterを押します。
接続が完了すると、230 User logged in。と表示されます。

あとはお好きにファイルのアップロードやダウンロードなどお好きなことを試していただければ問題ないかと思います!
下記画像は、dirコマンドを用いて、FTPフォルダー内のファイルを一覧表示しています。

基本的なFTPコマンド
基本的なコマンドを表にしてまとめました。もし余力のある方は一覧を参考にFTPの操作に慣れてみてください!!
コマンド | 操作内容 |
---|---|
dir | ファイル一覧の表示 |
cd | ディレクトリの移動 |
get | ファイルのダウンロード |
put | ファイルのアップロード |
quit | FTPセッションの終了 |
注意点
基本的な注意事項になりますが、FTPを利用するときは下記点に注意してください。
本ブログでは検証用にローカル環境にサーバーを構築して記事を作成しております。
- パスワードは平文で送信されるため、重要なデータの転送には推奨されません
- 可能な限り、セキュアなSFTPやFTPS接続を使用しましょう
- 公共のWi-Fiでの使用は避けてください
まとめ
以上が、WindowsでFTP接続を行う基本的な手順です。
コマンドプロンプトを使用したFTP接続は、シンプルで覚えやすい方法です。ただし、セキュリティ面での制限があることを忘れずに、用途に応じて適切なプロトコルを選択するようにしましょう。
コメント