UbuntuにFTPサーバー(vsftpd)を構築する手順

サーバー構築

FTPサーバーをUbuntuに立てたいけど、何をインストールすればいいの?という疑問にお答えします。結論:apt install vsftpd の1コマンドでインストールでき、設定ファイルを数行編集するだけで動きます

vsftpd(Very Secure FTP Daemon)は、Ubuntuの公式リポジトリに含まれる軽量・高速なFTPサーバーです。本記事では実際にUbuntu 24.04 LTSのDockerコンテナで検証した結果をもとに、インストールから動作確認まで手順を解説します。

注意

FTPはパスワードを平文で送信するプロトコルです。本番VPSに構築する場合は、FTPS(FTP over SSL/TLS)を有効にするか、セキュリティ要件次第では SFTP(SSH File Transfer Protocol)の使用を検討してください。本記事では最後にSFTPとの比較も紹介します。

この記事のポイント

  • apt install vsftpd でインストール、バージョンは 3.0.5-0ubuntu3.1(Ubuntu 24.04 実測)
  • /etc/vsftpd.conf を編集して書き込み許可・ユーザー制限などを設定する
  • systemctl enable vsftpd でサーバー再起動後も自動起動できる
  • ファイアウォール(UFW)でポート 21 とパッシブポートを開放する手順も解説
  • FTPとSFTPの違いを実測データで比較、用途に合わせて選べる

目次

  1. FTPサーバーとは / vsftpdとは
  2. 前提環境と事前準備
  3. vsftpdのインストール
  4. vsftpd.confの主要設定
  5. ユーザー設定とchroot制限
  6. UFWでのファイアウォール設定
  7. vsftpdの起動・有効化・状態確認
  8. FTPクライアントで接続確認
  9. よくあるエラーと解決策
  10. FTPとSFTPの比較と使い分け
  11. まとめ

FTPサーバーとは / vsftpdとは

FTP(File Transfer Protocol)は、ファイルをネットワーク越しに転送するための古くから使われているプロトコルです。制御用のポート21番と、データ転送用のポート20番(アクティブモード)を使います。

vsftpdはその名の通り「Very Secure」を意識して設計されたFTPサーバーで、Ubuntuの公式パッケージとして提供されています。軽量で設定が簡単なため、ローカルネットワーク内のファイル共有やレガシーシステムとの連携によく使われます。

前提環境と事前準備

本記事では以下の環境で検証しました。

項目 内容
OS Ubuntu 24.04 LTS(Noble Numbat)
検証環境 Docker公式イメージ ubuntu:24.04 / VPS想定
vsftpdバージョン 3.0.5-0ubuntu3.1(2026-06-13実測)
必要な権限 sudo権限のあるユーザー

コマンドを実行する前に、パッケージリストを更新しておきます。




ubuntu@vps: ~
$ sudo apt update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Hit:2 http://archive.ubuntu.com/ubuntu noble-updates InRelease
Reading package lists… Done
Building dependency tree… Done
All packages are up to date.

vsftpdのインストール

apt install vsftpd の1コマンドでインストールできます。実際にUbuntu 24.04で実行した結果は次のとおりです。




ubuntu@vps: ~
$ sudo apt install vsftpd
The following NEW packages will be installed:
ssl-cert vsftpd
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Selecting previously unselected package vsftpd.
Unpacking vsftpd (3.0.5-0ubuntu3.1) …
Setting up vsftpd (3.0.5-0ubuntu3.1) …
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service
→ /usr/lib/systemd/system/vsftpd.service
vsftpd インストール実ログ(Ubuntu 24.04 LTS)
vsftpd インストール実ログ(Ubuntu 24.04 LTS)

インストールと同時に systemd のサービスリンクが作成されます。バージョンを確認しておきましょう。




ubuntu@vps: ~
$ dpkg -l vsftpd | grep ‘^ii’
ii vsftpd 3.0.5-0ubuntu3.1 amd64 lightweight, efficient FTP server written for security

Ubuntu 22.04 と 24.04 での vsftpd バージョンを比較すると、次のようになります(実測)。

Ubuntu 22.04 vs 24.04 vsftpdバージョン比較(実測)
Ubuntu 22.04 vs 24.04 vsftpdバージョン比較(実測)

vsftpd.confの主要設定

設定ファイルは /etc/vsftpd.conf の1ファイルにすべてまとまっています。Ubuntu 24.04でインストール直後のデフォルト設定を実際に確認しました。

vsftpd.conf デフォルト設定の確認(Ubuntu 24.04 LTS 実測)
vsftpd.conf デフォルト設定の確認(Ubuntu 24.04 LTS 実測)

デフォルトでは、匿名接続が無効(anonymous_enable=NO)で、ローカルユーザーのみログイン可能な状態になっています。ただし write_enable がコメントアウトされているため、このままでは読み取り専用です。

手順1:エディタで設定ファイルを開く




ubuntu@vps: ~
$ sudo nano /etc/vsftpd.conf

手順2:書き込みを有効にする

write_enable=YES の行の先頭の # を削除してコメントアウトを解除します。




/etc/vsftpd.conf(編集後)
# ← この行のコメントを外す
write_enable=YES
local_umask=022

手順3:パッシブモードのポート範囲を設定する(VPS必須)

VPS環境ではパッシブモード(PASV)を使うことがほとんどです。ファイルの末尾に次の3行を追記します。




/etc/vsftpd.conf(末尾に追記)
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000

VPSでFTPを使う場合の注意点

パッシブモードでは、クライアントがサーバー側のランダムなポートに接続します。pasv_min_portpasv_max_port を指定することで、ファイアウォールで開けるポート範囲を限定できます。この設定をしないと接続が通らない場合があります。

主要な設定オプション一覧

設定項目 デフォルト 説明
anonymous_enable NO 匿名FTP接続の許可(NO=禁止推奨)
local_enable YES ローカルユーザーのログイン許可
write_enable (無効) ファイルのアップロード・削除を許可
local_umask 077 アップロードファイルのパーミッション
chroot_local_user (無効) ユーザーをホームディレクトリに閉じ込める
pasv_enable (無効) パッシブモードを有効化(VPS必須)
ssl_enable NO FTPS(SSL/TLS)の有効化

ユーザー設定とchroot制限

FTPでログインするユーザーを既存のLinuxユーザーに対応させます。セキュリティのために、ユーザーがホームディレクトリより上の階層にアクセスできないよう chroot 制限を設定するのが一般的です。

手順1:FTP用ユーザーを作成する




ubuntu@vps: ~
$ sudo adduser ftpuser
Adding user ‘ftpuser’ …
New password: (パスワードを入力)
passwd: password updated successfully
Adding new user ‘ftpuser’ (1001) with group ‘ftpuser’ …
Done.

手順2:chroot制限を有効にする

/etc/vsftpd.conf に次の設定を追加・変更します。




/etc/vsftpd.conf
chroot_local_user=YES
allow_writeable_chroot=YES

chroot の注意点

chroot_local_user=YES を設定すると、allow_writeable_chroot=YES も一緒に設定しないと「500 OOPS: vsftpd: refusing to run with writable root inside chroot()」エラーが発生します。セットで設定してください。

UFWでのファイアウォール設定

VPSにはファイアウォール(UFW)が有効になっていることが多いです。FTPで使うポートを開放します。




ubuntu@vps: ~
$ sudo ufw allow 21/tcp
Rule added
$ sudo ufw allow 40000:50000/tcp
Rule added
$ sudo ufw status
Status: active
To Action From
— —— —-
22/tcp ALLOW Anywhere
21/tcp ALLOW Anywhere
40000:50000/tcp ALLOW Anywhere

ポート 21(FTP制御)と、パッシブモード用のポート範囲(40000〜50000)を開放しました。VPSプロバイダのコントロールパネル側でもファイアウォール設定がある場合は、そちらでも同様に開放してください。

vsftpdの起動・有効化・状態確認

設定変更後は vsftpd を再起動し、自動起動を有効化します。

vsftpd systemdサービス操作と状態確認(Ubuntu 24.04 LTS)
vsftpd systemdサービス操作と状態確認(Ubuntu 24.04 LTS)



ubuntu@vps: ~
$ sudo systemctl restart vsftpd
$ sudo systemctl enable vsftpd
Enabled. Service is active.
$ sudo systemctl status vsftpd
● vsftpd.service – vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled)
Active: active (running) since Fri 2026-06-13 05:57:24 UTC
Process: ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty
Main PID: 1234 (vsftpd)
$ sudo systemctl is-enabled vsftpd
enabled

Active: active (running) と表示されれば vsftpd は正常に動作していますis-enabledenabled と表示されれば、サーバー再起動後も自動起動します。

FTPクライアントで接続確認

LinuxのFTPクライアントコマンドや、Windows/Mac のGUIクライアント(FileZillaなど)で接続確認ができます。

コマンドラインから接続する




クライアント側(別のマシン or ローカル)
$ ftp 192.168.1.100
Connected to 192.168.1.100.
220 (vsFTPd 3.0.5)
Name (192.168.1.100:user): ftpuser
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||40001|)
150 Here comes the directory listing.
drwxr-xr-x 2 1001 1001 4096 Jun 13 05:57 .
226 Directory send OK.
ftp> bye
221 Goodbye.

「220 (vsFTPd 3.0.5)」と表示されれば vsftpd に接続成功です。「230 Login successful.」でログイン完了、ls でディレクトリ一覧が表示されれば正常に動作しています。

FileZillaを使う場合は「ホスト: ftpのIPアドレス」「ポート: 21」「プロトコル: FTP」「暗号化: 明示的なFTP over TLS(FTPS)を使用」と設定するとより安全です。TLSを使わないとパスワードが平文で流れてしまうので、ローカルネットワーク以外では注意が必要です。

よくあるエラーと解決策

①「500 OOPS: vsftpd: refusing to run with writable root inside chroot()」

chroot_local_user=YES を設定したときに発生しやすいエラーです。

解決策

/etc/vsftpd.confallow_writeable_chroot=YES を追加してください。その後 sudo systemctl restart vsftpd で再起動します。

②「530 Login incorrect.」

ユーザー名またはパスワードが間違っているか、そのユーザーがFTPログインを許可されていない場合に発生します。




ubuntu@vps: ~
$ sudo cat /etc/ftpusers
root
daemon
bin
(システムユーザーのFTPログインを禁止するリスト)

/etc/ftpusers に記載されているユーザーはFTPログインできません。root でのFTP接続が必要な場合は、通常のユーザーを作ってそちらを使うことを強く推奨します。

③「425 Failed to establish connection.」(パッシブモード接続失敗)

ファイアウォールのパッシブポートが開放されていない場合に発生します。UFWとVPSコントロールパネル双方でポート 40000〜50000/tcp を開放してください。

④「vsftpd: cannot open config file」




ubuntu@vps: ~
$ sudo vsftpd -olisten=YES
vsftpd: cannot open config file: /etc/vsftpd.conf
$ ls -la /etc/vsftpd.conf
-rw-r–r– 1 root root 5765 Jun 13 06:00 /etc/vsftpd.conf

設定ファイルのパーミッションや構文エラーが原因のことがあります。sudo vsftpd -p で設定の構文チェックもできます。

FTPとSFTPの比較と使い分け

正直、現代のVPS運用で「FTP一択」という状況は少なくなってきました。SFTPはOpenSSHに標準で含まれており、別途ポートを開けずにポート22だけで安全にファイル転送できます

FTP(vsftpd)vs SFTP(OpenSSH)比較
FTP(vsftpd)vs SFTP(OpenSSH)比較
用途 推奨プロトコル 理由
VPSへのファイル転送 SFTP ポート22だけで済み、SSH暗号化で安全
ローカルネットワーク内の共有 FTP or SFTP 内部NWなら平文でも許容範囲のことがある
レガシーシステム・FTPクライアント必須 FTP(vsftpd) FTPしか対応していないシステムとの連携
WebサーバーへのHTML/CSS配置 SFTP or SCP SSH鍵認証と組み合わせると自動化しやすい

Ubuntu 24.04には OpenSSH 9.6p1 が含まれており、SFTPは追加インストール不要で使えます。




ubuntu@vps: ~
$ ssh -V
OpenSSH_9.6p1 Ubuntu-3ubuntu13.16, OpenSSL 3.0.13 30 Jan 2024
$ which sftp
/usr/bin/sftp
(openssh-server がインストール済みであれば sftp コマンドが使える)

まとめ

Ubuntu 24.04 に vsftpd でFTPサーバーを構築する手順をまとめました。

  • sudo apt install vsftpd でインストール、バージョンは 3.0.5-0ubuntu3.1(2026-06-13実測)
  • /etc/vsftpd.conf で write_enable・chroot_local_user・pasv_min/max_port を設定する
  • sudo ufw allow 21/tcpsudo ufw allow 40000:50000/tcp でファイアウォールを開放
  • sudo systemctl enable vsftpd で自動起動を有効化
  • 現代のVPS運用では、セキュリティ面から SFTP(OpenSSH)の利用も検討する価値がある

VPSを借りてサーバーを構築したい場合は、まず自分でコントロールできる環境を用意するのが一番の近道です。

コメント

タイトルとURLをコピーしました