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

Elastic Compute Service:Linux インスタンスでの FTP サーバーの構築

最終更新日:May 16, 2026

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

クイックデプロイ

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

前提条件

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

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

  • IP アドレス:インスタンスに固定パブリック IP アドレスがあるか、Elastic IP Address (EIP) が関連付けられている必要があります。詳細については、「Elastic IP Address」をご参照ください。

概要

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. FTP サービスを開始し、起動時の自動起動を有効にします。

    sudo systemctl start vsftpd
    sudo systemctl enable vsftpd 
  3. サービスが開始されているかどうかを確認します。

    netstat -antup | grep ftp

    次のような出力は、FTP サービスが正常に開始されたことを示します。

    image

    デフォルトでは、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 の設定ファイルを編集します。

    説明

    FTP はアクティブモードとパッシブモードをサポートしています。ほとんどのクライアントはファイアウォールまたは 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 サービスを構築した後、FTP モードに基づいてインバウンドのセキュリティグループルールを追加します。詳細については、「セキュリティグループルールの追加」をご参照ください。

ほとんどのクライアントは、IP アドレスが変換される LAN 内にあります。アクティブモードでは、クライアントは実際の IP アドレスを公開する必要があり、そうでない場合、FTP 接続が失敗する可能性があります。

  • アクティブモード:ポート 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 メッセージが表示されれば、接続は成功です。

    image

  2. クライアント接続をテストします。

    クライアントコンピューターで、ファイルエクスプローラーを開き、図に示すように FTP アドレスを入力します。

    image

    ログインダイアログボックスに 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=xx.xx.xx.xx  # パブリック IP アドレスに置き換えてください
    pasv_min_port=40000
    pasv_max_port=40100
  5. FTP サービスを再起動します。

    sudo systemctl restart vsftpd
  6. FTP のインストール中に、パスワードが設定されていない ftp という名前のデフォルトユーザーが作成されます。このユーザーのパスワードを変更してください。

     sudo passwd ftp

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

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

     echo "ftp" | sudo tee -a /etc/vsftpd.userlist
  8. FTP ファイルディレクトリを作成し、ユーザー権限を付与します。

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

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

      この例では、読み取り、書き込み、実行の権限をすべて付与します。必要に応じて調整してください。
       sudo chmod 777 /home/ftp

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

FTP サービスを構築した後、FTP モードに基づいてインバウンドのセキュリティグループルールを追加します。詳細については、「セキュリティグループルールの追加」をご参照ください。

ほとんどのクライアントは、IP アドレスが変換される LAN 内にあります。アクティブモードでは、クライアントは実際の IP アドレスを公開する必要があり、そうでない場合、FTP 接続が失敗する可能性があります。

  • アクティブモード:ポート 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 メッセージが表示されれば、接続は成功です。

    image

  2. クライアント接続をテストします。

    クライアントコンピューターで、ファイルエクスプローラーを開き、図に示すように FTP アドレスを入力します。

    image

    ログインダイアログボックスに 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:ユーザーアクセス制御ファイル。vsftpd.conf の userlist_deny 設定に応じて、ホワイトリストまたはブラックリストとして機能します。

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=lightwriter

    匿名ユーザーがアップロードしたファイルの所有者となるユーザー名を指定します。