Windows IISでローカルFTPサーバを構築する

はじめに

ファイル転送の検証やテストを行う際に、ローカル環境でFTPサーバが必要になる場面がある。
WindowsにはIIS(Internet Information Services)が標準で搭載されており、FTPサーバ機能を簡単に有効化できる。

今回は、Windows IISを使ってローカル環境にFTPサーバを構築する手順を紹介する。

環境

Windows 11 Pro
IIS 10.0

IIS FTPサーバとは

IISは、Microsoftが提供するWebサーバソフトウェアで、FTP機能も含まれている。
Windows標準機能として提供されているため、追加のソフトウェアをインストールすることなくFTPサーバを構築できる。

※以前書いた記事のWindowsでIIS Webサーバを使ってみるでWindows IIS Webサーバを使っている。

IISとFTPサービスのインストール

IISの有効化

Windowsの機能からIISを有効化する。 ※既に有効化されているのであればスキップしてよい。

  1. Windowsキー + Rで「ファイル名を指定して実行」を開く
  2. appwiz.cplと入力してEnter
  3. 左側の「Windowsの機能の有効化または無効化」をクリック
  4. 「インターネット インフォメーション サービス」にチェックを入れる
  5. 「FTPサーバー」を展開し、以下にチェックを入れる
    • FTPサービス
    • FTP機能拡張
iis-ftp-server-01
  1. 「Webサーバー」も展開し、必要最小限の機能にチェックを入れる
    • Web管理ツール > IIS管理コンソール
  2. 「OK」をクリックしてインストールを開始する

インストールが完了すると、IISが利用可能になる。

IISマネージャーの起動

  1. Windowsキー + Rで「ファイル名を指定して実行」を開く
  2. inetmgrと入力してEnter
  3. IISマネージャーが起動する start-iis-manager-01

FTPサイトの作成

基本設定

IISマネージャーでFTPサイトを作成する。

  1. 左側のツリーで「サイト」を右クリック
  2. 「FTPサイトの追加」を選択
construct-ftp-server-01
  1. 「サイト情報」で以下を設定
    • FTPサイト名: LocalFTPSite(任意の名前)
    • 物理パス: FTPで公開するフォルダを指定(例: C:\FTPRoot
construct-ftp-server-02
  1. 「次へ」をクリック

バインドとSSLの設定

  1. 「バインドおよびSSL設定」で以下を設定
    • IPアドレス: すべて未割り当てまたは特定のIPアドレス
    • ポート: 21(FTPの標準ポート)
    • 仮想ホスト: 空欄
    • SSL: なし(テスト環境の場合)またはSSL証明書を要求する(本番環境)
construct-ftp-server-03
  1. 「次へ」をクリック

認証とアクセス許可の設定

  1. 「認証および承認情報」で以下を設定
    • 認証: 基本にチェック
    • 承認: 指定されたユーザーを選択し、testftpuser(後ほど作成)を入力
    • アクセス許可: 読み取り書き込みの両方にチェック(必要に応じて)
construct-ftp-server-04
  1. 「完了」をクリック

FTPサイトが作成され、一覧に表示される。

ユーザの作成

FTPサーバにアクセスするための専用ユーザを作成する。

  1. Windowsキー + Rで「ファイル名を指定して実行」を開く
  2. lusrmgr.mscと入力してEnter
  3. 「ローカル ユーザーとグループ」が開く
  4. 左側で「ユーザー」を選択
  5. 右クリックして「新しいユーザー」を選択
create-ftp-user-01
  1. 以下の情報を入力
    • ユーザー名: testftpuser(任意の名前)
    • パスワード: 任意のパスワードを設定
    • パスワードの確認入力: 同じパスワードを再入力
    • 「ユーザーは次回ログオン時にパスワードの変更が必要」のチェックを外す
    • 「パスワードを無期限にする」にチェック
create-ftp-user-02
  1. 「作成」をクリック

FTPサーバの動作確認

コマンドプロンプトからの接続

Windowsのftpコマンドで接続を確認する。

ftp localhost

ユーザー名とパスワードを入力してログインできれば成功である。

kbushi に接続しました。
220 Microsoft FTP Service
200 OPTS UTF8 command successful - UTF8 encoding now ON.
ユーザー (kbushi:(none)): testftpuser
331 Password required
パスワード:

230 User logged in.
ftp>

基本的なFTPコマンドを試してみる。

コマンド説明
lsファイル一覧を表示
pwd現在のディレクトリを表示
cd directoryディレクトリを移動
get filenameファイルをダウンロード
put filenameファイルをアップロード
bye接続を終了

FTPクライアントからの接続

FileZillaなどのFTPクライアントソフトからも接続できる。

項目設定値
ホストlocalhostまたは127.0.0.1
ポート21
プロトコルFTP
ユーザー名[設定したユーザ]
パスワード[設定したパスワード]

接続すると、設定したFTPルートディレクトリの内容が表示される。

参考

おわりに

FTPの通信を行うプログラムの動作確認を行うことがあり、ローカルにFTPサーバを構築する必要があったため構築をしてみた。
Windows IISを使うことで、簡単にローカル環境でFTPサーバを構築できたので手軽さでいうとかなり良かった。
構築自体は簡単ではあるが、任意のエラーを返すみたいなことはできないのでクライアントプログラムの検証用としては物足りないかもしれない…。

PythonにはpyftpdlibっていうFTPサーバを構築するものがあり、そのライブラリでは任意のエラーが返せるようなので検証用としてはこちらのほうが良さそうな気がする。
次回は、それを使って試してみるとしようかな。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。