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

Elastic Compute Service:Linux インスタンスでの FTP サーバーの設定

最終更新日:Aug 12, 2026

Linux の Elastic Compute Service (ECS) インスタンスに vsftpd をインストールして設定し、安全な FTP ファイル転送を有効にします。

クイックデプロイメント

[Run now] をクリックして Terraform Explorer を開き、ECS インスタンス上に FTP サイトを自動的に構築します。

前提条件

次の要件を満たす ECS インスタンスが作成されている必要があります。詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。

  • オペレーティングシステム:Alibaba Cloud Linux 3/2、CentOS 7.x 64 ビット、Ubuntu、または Debian。

  • IP アドレス:インスタンスに固定パブリック IP アドレスまたは Elastic IP Address (EIP) が割り当てられていること。

概要

vsftpd (Very Secure FTP Daemon) は、UNIX および Linux システム向けのオープンソース FTP サーバーです。主な特徴は次のとおりです:

  • 高いセキュリティ:厳格なセキュリティ監査と、一般的な攻撃を防ぐための複数のメカニズムを備えています。

  • 高いパフォーマンス:効率的なファイル転送で多数の同時接続を処理します。

  • シンプルな設定:さまざまなニーズに対応する、柔軟で分かりやすいオプションを提供します。

  • IPv6 サポート:IPv6 ネットワークをネイティブでサポートします。

vsftpd サービスの構築

Alibaba Cloud Linux 3 および 2/CentOS 7.x

ステップ 1:vsftpd のインストール

  1. システムを更新し、vsftpd をインストールします。

    sudo yum update -y 
    sudo yum install vsftpd -y
  2. vsftpd を起動し、起動時に自動的に有効になるように設定します。

    sudo systemctl start vsftpd
    sudo systemctl enable vsftpd 
  3. サービスが実行中であることを確認します。

    netstat -antup | grep ftp

    以下の出力は、vsftpd が実行中であることを示しています。

    [root@xxx ~]# systemctl start vsftpd
    [root@xxx ~]# netstat -antup | grep ftp
    tcp6       0      0 :::21                   :::*                    LISTEN      16387/vsftpd

    デフォルトでは、vsftpd は匿名での読み取り専用アクセスを許可します。

ステップ 2:vsftpd の設定

  1. FTP ユーザーを作成します。この例では ftpuser を使用します。

    sudo useradd -d /data/ftp -s /sbin/nologin ftpuser  # ホームディレクトリを指定し、シェルアクセスを無効化
    sudo passwd ftpuser 
  2. FTP ディレクトリを作成し、権限を設定します。

    sudo mkdir -p /data/ftp      # カスタムストレージディレクトリを作成
    sudo chown ftpuser:ftpuser /data/ftp
    sudo chmod 750 /data/ftp    # 権限は 755 または 750 である必要があります
  3. vsftpd の設定ファイルを編集します。

    説明

    パッシブモードを使用します。ほとんどのクライアントはファイアウォールや NAT の内側にあり、実際の IP アドレスを公開できません。

    1. vsftpd の設定ファイルをバックアップします。

      sudo cp /etc/vsftpd/vsftpd.conf  /etc/vsftpd/vsftpd.conf.bak
    2. 設定ファイルを編集します。

      sudo vim /etc/vsftpd/vsftpd.conf
    3. 基本的なセキュリティ設定を行います。

      listen=YES                   # IPv4 リスナーを有効化
      anonymous_enable=NO          # 匿名アクセスを無効化
      local_enable=YES             # ローカルユーザーのログインを有効化
      write_enable=YES             # ファイルのアップロードを許可
      chroot_local_user=YES        # ユーザーをホームディレクトリにロック
      allow_writeable_chroot=YES   # chroot の書き込みエラーを解決
    4. パッシブモードの設定を追加します。

      pasv_enable=YES              # パッシブモードを有効化
      pasv_min_port=40000          # パッシブポート範囲の下限
      pasv_max_port=40100          # パッシブポート範囲の上限
      pasv_address=public_ip_address      # サーバーのパブリック IP アドレスに設定する必要があります
  4. vsftpd を再起動します。

    sudo systemctl restart vsftpd

ステップ 3:セキュリティグループルールの設定

設定した FTP モードに対応するセキュリティグループのインバウンドルールを追加します。詳細については、「セキュリティグループルールの追加」をご参照ください。

アクティブモードでは、NAT の内側にあるクライアントは実際の IP アドレスを公開する必要があり、接続に失敗する可能性があります。

  • アクティブモード:ポート 21 のトラフィックを許可します。

  • パッシブモード:ポート 21 とポート 40000~40100 (/etc/vsftpd/vsftpd.conf の pasv_min_port から pasv_max_port まで) のトラフィックを許可します。詳細については、「FTP パッシブモードのポート設定」をご参照ください。

ステップ 4:FTP サービスの検証

FTP クライアント、ブラウザ、またはファイルエクスプローラーを使用して FTP サービスを検証します。この例では、ファイルエクスプローラーを使用します。

  1. ローカル接続をテストします。

    サーバーで次のコマンドを実行します。

    ftp ftpuser@localhost 

    Login successful というメッセージが表示されれば、接続は成功です。

    # ftp ftpuser@localhost
    Connected to localhost.
    220 (vsFTPd 3.0.5)
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
  2. クライアント接続をテストします。

    お使いのクライアントマシンでファイルエクスプローラーを開き、アドレスバーに FTP アドレスを入力します。

    アドレスの形式は ftp://<FTP_server_public_IP_address>:21 です。接続に成功すると、ファイルエクスプローラーに FTP サーバーのディレクトリ内のファイルが表示されます。

    FTP のユーザー名とパスワードを入力してログインします。その後、ファイルをアップロードおよびダウンロードできます。

Ubuntu および Debian

ステップ 1:vsftpd のインストール

  1. システムを更新し、vsftpd をインストールします。

    sudo apt update && sudo apt upgrade -y
    sudo apt install vsftpd -y
  2. vsftpd を起動し、起動時に自動的に有効になるように設定します。

    sudo systemctl start vsftpd
    sudo systemctl enable vsftpd

ステップ 2:vsftpd の設定

  1. 専用の FTP ユーザーを作成します。

    sudo useradd -m -s /bin/bash ftpuser  # ユーザーを作成し、ホームディレクトリを自動的に生成
    sudo passwd ftpuser  # ユーザーパスワードを設定 (強力なパスワードを推奨)
  2. ファイルストレージディレクトリを作成し、権限を設定します。

    sudo mkdir /home/ftpuser/ftp-files
    sudo chown ftpuser:ftpuser /home/ftpuser/ftp-files
    sudo chmod 755 /home/ftpuser/ftp-files
  3. 元の設定ファイルをバックアップします。

    sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
  4. 設定ファイルを編集します。

    sudo nano /etc/vsftpd.conf

    次の設定を適用します:

    # 基本設定
    listen=YES
    anonymous_enable=NO          # 匿名アクセスを無効化
    local_enable=YES             # ローカルユーザーのログインを許可
    write_enable=YES             # 書き込み権限を有効化
    chroot_local_user=YES        # ユーザーをホームディレクトリにロック

    以下を追加します:

    allow_writeable_chroot=YES   # chroot ディレクトリへの書き込みを許可
    local_root=/home/ftpuser/ftp-files  # ftp ユーザーのルートディレクトリを指定
    # パッシブモード設定 (外部ネットワーク接続の問題を解決するため)
    pasv_enable=YES
    pasv_address=<your_public_ip_address>  # ご利用のパブリック IP アドレスに置き換えてください
    pasv_min_port=40000
    pasv_max_port=40100</your_public_ip_address>
  5. vsftpd を再起動します。

    sudo systemctl restart vsftpd
  6. vsftpd はパスワードなしのデフォルトの ftp ユーザーを作成します。このユーザーにパスワードを設定してください。

     sudo passwd ftp

    強力なパスワードを設定し、他のすべてのプロンプトはスキップします。

  7. FTP ユーザーの許可リストにユーザーを追加します。

     echo "ftp" | sudo tee -a /etc/vsftpd.userlist
  8. FTP ディレクトリを作成し、権限を設定します。

    1. FTP フォルダを作成します。

       sudo mkdir /home/ftp
    2. フォルダの権限を設定します。

      これにより、すべての権限 (777) が付与されます。必要に応じて調整してください。
       sudo chmod 777 /home/ftp

ステップ 3:セキュリティグループルールの設定

設定した FTP モードに対応するセキュリティグループのインバウンドルールを追加します。詳細については、「セキュリティグループルールの追加」をご参照ください。

アクティブモードでは、NAT の内側にあるクライアントは実際の IP アドレスを公開する必要があり、接続に失敗する可能性があります。

  • アクティブモード:ポート 21 のトラフィックを許可します。

  • パッシブモード:ポート 21 とポート 40000~40100 (/etc/vsftpd/vsftpd.conf の pasv_min_port から pasv_max_port まで) のトラフィックを許可します。詳細については、「Windows での FTP サイトの設定」をご参照ください。

ステップ 4:FTP サービスの検証

FTP クライアント、ブラウザ、またはファイルエクスプローラーを使用して FTP サービスを検証します。この例では、ファイルエクスプローラーを使用します。

  1. ローカル接続をテストします。

    サーバーで次のコマンドを実行します。

    ftp ftpuser@localhost 

    Login successful というメッセージが表示されれば、接続は成功です。

    # ftp ftpuser@localhost
    Connected to localhost.
    220 (vsFTPd 3.0.5)
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
  2. クライアント接続をテストします。

    お使いのクライアントマシンでファイルエクスプローラーを開き、アドレスバーに FTP アドレスを入力します。

    アドレスの形式は ftp://<FTP_server_public_IP_address>:21 です。接続に成功すると、ファイルエクスプローラーに FTP サーバーのディレクトリ内のファイルが表示されます。

    FTP のユーザー名とパスワードを入力してログインします。その後、ファイルをアップロードおよびダウンロードできます。

トラブルシューティング

問題

解決策

227 Entering Passive Mode の後にタイムアウトする

クライアントとサーバーの両方で、パブリック IP アドレスとファイアウォールルールを確認します。

550 Permission denied

ディレクトリの権限を 755 に設定します。

空のディレクトリのみが表示される

chroot_local_user の設定を確認します。

500 OOPS: vsftpd: refusing to run with writable root

chmod a-w /data/ftp を実行します。

パッシブモード接続のタイムアウト

ファイアウォールルールと pasv_address の設定を確認します。

ファイルをアップロードできない

ディレクトリの権限が 755 または 750 であることを確認します。

付録

vsftpd の設定ファイルとパラメーター

/etc/vsftpd ディレクトリ内のファイル:

  • /etc/vsftpd/vsftpd.conf:vsftpd のコア設定ファイル。

  • /etc/vsftpd/ftpusers:ブロックリスト。ここにリストされているユーザーは FTP アクセスを拒否されます。

  • /etc/vsftpd/user_list:許可リスト。ここにリストされているユーザーは FTP アクセスを許可されます。

vsftpd.conf 設定ファイル内のパラメーター:

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

    パラメーター

    説明

    anonymous_enable=YES

    匿名ユーザーを受け入れます。

    no_anon_password=YES

    匿名ユーザーはパスワードなしでログインできます。

    anon_root=(none)

    匿名ユーザーのホームディレクトリ。

    local_enable=YES

    ローカルユーザーを受け入れます。

    local_root=(none)

    ローカルユーザーのホームディレクトリ。

  • ユーザー権限制御パラメーター:

    パラメーター

    説明

    write_enable=YES

    ファイルのアップロードを許可します (グローバル)。

    local_umask=022

    ローカルユーザーがアップロードするファイルの権限。

    file_open_mode=0666

    アップロードファイルの権限。local_umask と連携して動作します。

    anon_upload_enable=NO

    匿名でのファイルアップロードを許可します。

    anon_mkdir_write_enable=NO

    匿名でのディレクトリ作成を許可します。

    anon_other_write_enable=NO

    匿名での編集および削除操作を許可します。

    chown_username=lightwiter

    匿名ユーザーによってアップロードされたファイルに割り当てられる所有者。