すべてのプロダクト
Search
ドキュメントセンター

Simple Application Server:FTP サーバーのセットアップ (Linux)

最終更新日:Apr 02, 2026

Very Secure FTP Daemon (vsftpd) は、Linux 向けの軽量な FTP サーバーです。本トピックでは、Linux ベースの Simple Application Server への vsftpd のインストールおよび構成手順を説明し、FileZilla を使用して接続を検証します。

説明

FTP は認証情報も含むすべてのデータをプレーンテキストで送信します。暗号化を必要とする本番環境向けワークロードには、代わりに SFTP または FTPS をご検討ください。本ガイドでは、FTP が明示的に要件となるユースケースにおける vsftpd の利用方法を解説します。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

FTP 接続および認証モード

FTP は、以下の 2 種類の接続モードで動作します。

  • アクティブモード:クライアントが自身のポート情報をサーバーに送信し、サーバーがデータ接続を開始します。

  • パッシブモード:サーバーがポートを開き、そのポート情報をクライアントに送信した後、クライアントが接続を開始します。本ガイドでは、ファイアウォールおよび NAT を通過しやすいパッシブモードを構成します。

FTP は、以下の 3 種類の認証モードをサポートします。

モードセキュリティ説明
匿名ユーザー モード最低ユーザー名およびパスワードは不要です。公開ファイル転送のみに適しています。本番環境では使用しないでください。
ローカルユーザー モードLinux のローカルユーザーによる認証を行います。本ガイドで解説します。
仮想ユーザー モード最高システムから分離された仮想ユーザーを使用します。専門的な構成が必要です。

本ガイドでは、推奨されるローカルユーザー モードおよび匿名ユーザー モードについて解説します。

手順 1:vsftpd のインストール

  1. Linux サーバーへの接続を行います。

  2. vsftpd が既にインストールされているかどうかを確認します。アプリケーションイメージでデプロイされた一部のサーバーには、vsftpd がプリインストール済みの場合があります。再インストールすると競合が発生する可能性があるため、注意してください。

    vsftpd -v

    出力にバージョン番号が表示された場合、vsftpd は既にインストールされています。

    vsftpd: version 3.0.2

    vsftpd が既にインストールされている場合は、アプリケーションイメージのドキュメントから FTP 認証情報を取得し、手順 3:ファイアウォールのポート開放へスキップしてください。

  3. vsftpd のインストールを行います。本例では CentOS 7 を使用します。他の Linux ディストリビューションについては、「ECS インスタンスでの FTP サイト構築」をご参照ください。

    sudo yum install -y vsftpd

    成功メッセージが表示されれば、インストールが完了しています。

  4. vsftpd を起動時に自動実行するように有効化します。

    sudo systemctl enable vsftpd.service
  5. vsftpd を起動します。

    sudo systemctl start vsftpd.service
    説明

    サービスの起動に失敗し、「Job for vsftpd.service failed because the control process exited with error code」というエラーが表示された場合、ポート 21 がすでに使用中である可能性があります。lsof -i:21 を実行して該当プロセスを特定し、その後 kill -9 <PID> を実行してプロセスを停止したうえで、vsftpd を再起動してください。

  6. vsftpd が実行中であることを確認します。

    sudo netstat -antup | grep ftp

    出力に FTP サービスポートが表示された場合、vsftpd は正常に実行中です。

手順 2:アクセスモードの構成

以下のモードのいずれかを選択してください。セキュリティ面を考慮し、ローカルユーザー モードを推奨します。

ローカルユーザー モード(推奨)

  1. FTP アクセス用に専用の Linux ユーザーを作成します。本例では ftptest を使用します。

    sudo adduser ftptest
  2. ユーザーのパスワードを設定します。

    sudo passwd ftptest

    プロンプトに従って、パスワードの入力および確認を行ってください。

  3. FTP ディレクトリを作成します。

    sudo mkdir /var/ftp/test
  4. ディレクトリの所有権を ftptest に割り当てます。

    sudo chown -R ftptest:ftptest /var/ftp/test
  5. 編集前に vsftpd 構成ファイルのバックアップを作成します。

    sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
  6. 構成ファイルを編集するために開きます。

    説明

    apt install vsftpd で vsftpd をインストールした場合、構成ファイルのパスは /etc/vsftpd.conf になります。

    sudo vim /etc/vsftpd/vsftpd.conf

    i を押して編集モードに入ります。

  7. 以下のパラメーターを更新します。これらの行が # でコメントアウトされていないこと、および末尾に余分なスペースがないことを確認してください。余分なスペースがあると、vsftpd の再起動時にエラーが発生します。/etc/vsftpd/vsftpd.conf

    # 匿名ログインを無効化
    anonymous_enable=NO
    # ローカルユーザーのログインを許可
    local_enable=YES
    # IPv4 でリッスン
    listen=YES

    IPv6 リスナーをコメントアウトするには、行頭に # を追加します。

    #listen_ipv6=YES
  8. ファイル末尾に以下のパラメーターを追加します。ただし、39.105.xx.xx はご利用のサーバーのパブリック IP アドレスに置き換えてください。/etc/vsftpd/vsftpd.conf

    # ログイン後のローカルユーザーのホームディレクトリを設定
    local_root=/var/ftp/test
    # ユーザーをホームディレクトリに制限
    chroot_local_user=YES
    # chroot 制限から除外するユーザーの一覧を有効化
    chroot_list_enable=YES
    # 除外リストファイルのパス
    chroot_list_file=/etc/vsftpd/chroot_list
    # パッシブモードを有効化
    pasv_enable=YES
    allow_writeable_chroot=YES
    # サーバーのパブリック IP アドレス
    pasv_address=39.105.xx.xx
    # パッシブモードのポート範囲(高番号ポートを指定することでリスクを低減)
    pasv_min_port=50000
    pasv_max_port=50010

    Esc キーを押し、次に :wq を入力して Enter キーを押すと、保存して終了します。

  9. chroot 除外リストファイルを作成します。このファイルに記載されたユーザーはホームディレクトリに制限されません。空であっても、このファイルは必須です。

    sudo vim /etc/vsftpd/chroot_list

    i を押して編集モードに入ります。除外対象のユーザー名を 1 行につき 1 つずつ記述します(除外が必要ない場合は、ファイルを空のままにしてください)。Esc キーを押し、次に :wq を入力して Enter キーを押すと、保存して終了します。

  10. システムファイアウォールを停止します。vsftpd のポートアクセス管理は、手順 3 で構成する Simple Application Server のファイアウォールで行います。

     sudo systemctl stop firewalld
  11. SSH 構成でパスワード認証を有効化します。

     sudo vi /etc/ssh/sshd_config

    ファイル末尾にある PasswordAuthentication を探して、値を yes に設定します。Esc キーを押し、次に :wq! を入力して Enter キーを押すと、保存して終了します。

  12. 変更を適用するために vsftpd を再起動します。

     sudo systemctl restart vsftpd.service

匿名ユーザー モード

重要

匿名モードでは、パスワードなしで誰でも接続できます。非本番環境での公開ファイル転送にのみ使用してください。

  1. vsftpd 構成ファイルを開きます。

    説明

    apt install vsftpd で vsftpd をインストールした場合、構成ファイルのパスは /etc/vsftpd.conf になります。

    sudo vim /etc/vsftpd/vsftpd.conf

    i を押して編集モードに入ります。

  2. 以下のパラメーターを設定します。Linux ディストリビューションによってデフォルト値が異なる場合があります。編集後に両方の値が YES になっていることを確認してください。これらの行が # でコメントアウトされていないこと、および末尾に余分なスペースがないことを確認してください。/etc/vsftpd/vsftpd.conf

    anonymous_enable=YES
    anon_upload_enable=YES
    listen=YES
    listen_ipv6=NO
  3. ファイル末尾に以下のパラメーターを追加します。ただし、39.105.xx.xx はご利用のサーバーのパブリック IP アドレスに置き換えてください。/etc/vsftpd/vsftpd.conf

    # パッシブモードを有効化
    pasv_enable=YES
    # パッシブモードのポート範囲
    pasv_min_port=50000
    pasv_max_port=50010
    # サーバーのパブリック IP アドレス
    pasv_address=39.105.xx.xx

    Esc キーを押し、次に :wq を入力して Enter キーを押すと、保存して終了します。

  4. デフォルトの FTP ディレクトリ (/var/ftp/pub) に書き込み権限を付与します。

    sudo chmod o+w /var/ftp/pub/
  5. vsftpd を再起動します。

    sudo systemctl restart vsftpd.service

手順 3:ファイアウォールのポート開放

Simple Application Server のファイアウォールにインバウンドルールを追加し、FTP トラフィックを許可します。パッシブモードでは、ポート 21 およびパッシブポート範囲が必要です。「ファイアウォールの管理」をご参照ください。

アプリケーションタイププロトコルポート範囲
FTPTCP21
カスタムTCPpasv_min_portpasv_max_port(例:50000/50010)

ルールを追加した後、それらは ファイアウォール ページに表示されます。

image.png

手順 4:FTP 接続の検証

FileZilla を使用して、FTP サーバーへのアクセスが可能であることを確認します。

説明

本例では FileZilla 3.64.0 を使用します。他のバージョンでは、インターフェイスが異なる場合があります。

  1. FileZilla を起動します。

  2. ファイルサイトマネージャー に移動します。

  3. 新規サイト (N) をクリックします(サイトマネージャー ダイアログの左下隅)。

  4. 新規サイトの名前を入力し、接続を構成します。

    filezilla

    パラメーター
    名前任意のサイト名。例:test-01
    プロトコルFTP
    ホストサーバーのパブリック IP アドレス(例:121.43.XX.XX
    ポート21
    ログオンタイプ匿名(匿名モード)または通常(ローカルユーザー モード)

    ローカルユーザー モードの場合は、ログオンタイプ通常 に設定し、FTP のユーザー名およびパスワードを入力します。

  5. 接続 をクリックします。

接続後、FileZilla を使用してファイルのアップロード、ダウンロード、削除が可能です。インターフェイスは以下の 4 つのセクションに分割されています。

filezilla
セクション説明
接続ステータス、コマンド、タスク結果
ローカルマシン:ディレクトリおよびファイル一覧
リモートサーバー:FTP ディレクトリ一覧。匿名モードでは、デフォルトのディレクトリは /pub です。
転送キューおよびタスクログ

vsftpd 構成リファレンス

/etc/vsftpd ディレクトリには、以下の 3 つの主要なファイルが含まれています。

  • /etc/vsftpd/vsftpd.conf:メインの構成ファイル

  • /etc/vsftpd/ftpusers:このファイルに記載されたユーザーは FTP アクセスが拒否されます(ブラックリスト)

  • /etc/vsftpd/user_list:このファイルに記載されたユーザーは FTP アクセスが許可されます(ホワイトリスト)

ログイン制御パラメーター

パラメーター説明
anonymous_enable=YES匿名ユーザーの受け入れ
no_anon_password=YES匿名ユーザーに対するパスワード入力プロンプトをスキップ
anon_root=匿名ユーザーのホームディレクトリ
local_enable=YESローカルユーザーの受け入れ
local_root=ローカルユーザーのホームディレクトリ

権限パラメーター

パラメーター説明
write_enable=YESすべてのユーザーによるファイルアップロードを許可
local_umask=022ローカルユーザーによるアップロード時のファイル権限マスク
file_open_mode=0666アップロードされたファイルの権限に umask を適用
anon_upload_enable=NO匿名ユーザーによるファイルアップロードを許可
anon_mkdir_write_enable=NO匿名ユーザーによるディレクトリ作成を許可
anon_other_write_enable=NO匿名ユーザーによるファイルの変更または削除を許可
chown_username=lightwiter匿名ユーザーがアップロードしたファイルに割り当てる所有者