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 のインストール
-
システムを更新し、
vsftpdをインストールします。sudo yum update -y sudo yum install vsftpd -y -
FTP サービスを開始し、起動時の自動起動を有効にします。
sudo systemctl start vsftpd sudo systemctl enable vsftpd -
サービスが開始されているかどうかを確認します。
netstat -antup | grep ftp次のような出力は、FTP サービスが正常に開始されたことを示します。

デフォルトでは、vsftpd は匿名アクセスを有効にします。匿名ユーザーは認証なしでログインできますが、ファイルを変更またはアップロードすることはできません。
ステップ 2:vsftpd の設定
-
FTP ユーザーを作成し、パスワードを設定します。この例では
ftpuserを使用します。sudo useradd -d /data/ftp -s /sbin/nologin ftpuser # ホームディレクトリを指定し、シェルアクセスを無効化 sudo passwd ftpuser -
FTP ディレクトリを作成し、権限を設定します。
sudo mkdir -p /data/ftp # カスタムストレージディレクトリを作成 sudo chown ftpuser:ftpuser /data/ftp sudo chmod 750 /data/ftp # パーミッションは 755 または 750 である必要があります -
vsftpdの設定ファイルを編集します。説明FTP はアクティブモードとパッシブモードをサポートしています。ほとんどのクライアントはファイアウォールまたは NAT の内側にあり、実際の IP アドレスを公開できないため、パッシブモードを推奨します。
-
vsftpdの設定ファイルをバックアップします。sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak -
設定ファイルを編集します。
sudo vim /etc/vsftpd/vsftpd.conf -
基本的なセキュリティ設定を行います。
listen=YES # IPv4リスナーを有効化 anonymous_enable=NO # 匿名アクセスを無効化 local_enable=YES # ローカルユーザーのログインを有効化 write_enable=YES # ファイルのアップロードを許可 chroot_local_user=YES # ユーザーをホームディレクトリにロック allow_writeable_chroot=YES # chrootの書き込みエラーを解決 -
パッシブモードの設定を追記します。
pasv_enable=YES # パッシブモードを有効化 pasv_min_port=40000 # パッシブポート範囲の下限 pasv_max_port=40100 # パッシブポート範囲の上限 pasv_address=public_ip_address # サーバーのパブリック IP アドレスに設定する必要があります
-
-
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 クライアント、ブラウザ、またはファイルエクスプローラーで検証できます。この例では、ファイルエクスプローラーを使用します。
-
ローカル接続をテストします。
ローカルマシンからの接続をテストします。
ftp ftpuser@localhostLogin successfulメッセージが表示されれば、接続は成功です。
-
クライアント接続をテストします。
クライアントコンピューターで、ファイルエクスプローラーを開き、図に示すように FTP アドレスを入力します。

ログインダイアログボックスに FTP のユーザー名とパスワードを入力します。ログイン後、ファイルをアップロードおよびダウンロードできます。
Ubuntu および Debian
ステップ 1:vsftpd のインストール
-
システムを更新し、
vsftpdをインストールします。sudo apt update && sudo apt upgrade -y sudo apt install vsftpd -y -
vsftpdを開始し、起動時の自動起動を有効にします。sudo systemctl start vsftpd sudo systemctl enable vsftpd
ステップ 2:vsftpd の設定
-
FTP ユーザーを作成します。
sudo useradd -m -s /bin/bash ftpuser # ユーザーを作成し、ホームディレクトリを自動的に生成 sudo passwd ftpuser # ユーザーパスワードを設定 (強力なパスワードを推奨します) -
ファイル保存ディレクトリを作成し、権限を設定します。
sudo mkdir /home/ftpuser/ftp-files sudo chown ftpuser:ftpuser /home/ftpuser/ftp-files sudo chmod 755 /home/ftpuser/ftp-files -
元の設定ファイルをバックアップします。
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak -
設定ファイルを編集します。
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 -
FTP サービスを再起動します。
sudo systemctl restart vsftpd -
FTP のインストール中に、パスワードが設定されていない ftp という名前のデフォルトユーザーが作成されます。このユーザーのパスワードを変更してください。
sudo passwd ftp強力なパスワードを設定し、他のプロンプトはすべてスキップします。
-
ユーザーを FTP ユーザーの許可リストに追加します。
echo "ftp" | sudo tee -a /etc/vsftpd.userlist -
FTP ファイルディレクトリを作成し、ユーザー権限を付与します。
-
FTP フォルダーを作成します。
sudo mkdir /home/ftp -
フォルダーの権限を設定します。
この例では、読み取り、書き込み、実行の権限をすべて付与します。必要に応じて調整してください。
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 クライアント、ブラウザ、またはファイルエクスプローラーで検証できます。この例では、ファイルエクスプローラーを使用します。
-
ローカル接続をテストします。
ローカルマシンからの接続をテストします。
ftp ftpuser@localhostLogin successfulメッセージが表示されれば、接続は成功です。
-
クライアント接続をテストします。
クライアントコンピューターで、ファイルエクスプローラーを開き、図に示すように FTP アドレスを入力します。

ログインダイアログボックスに FTP のユーザー名とパスワードを入力します。ログイン後、ファイルをアップロードおよびダウンロードできます。
トラブルシューティング
|
問題 |
解決策 |
|
|
クライアントとサーバーの両方で、パブリック IP アドレスとファイアウォールルールを確認します。 |
|
|
ディレクトリの権限を 755 に設定します。 |
|
空のディレクトリのみが表示される |
|
|
|
|
|
パッシブモード接続のタイムアウト |
ファイアウォールルールと 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
匿名ユーザーがアップロードしたファイルの所有者となるユーザー名を指定します。