UbuntuにFTPサーバーを構築する方法:vsftpdを使った5つのステップ
Linuxサーバーを構築するなら、FTPアクセスの準備は欠かせません。そのためには、まずLinuxにFTPサーバーをインストールする必要があります。サーバーOSのインストール直後に最初に行うべき作業の一つと言えるでしょう。
多くのLinuxサーバーはUbuntuで動作しています。そこでこの記事では、Ubuntu ServerにFTPサーバーをセットアップする方法を詳しく解説します。
FTPサーバーとは?
FTP(File Transfer Protocol、ファイル転送プロトコル)は、サーバーへファイルをアップロード(put)したり、サーバーからファイルをダウンロード(get)したりするための仕組みです。過去にウェブからファイルを取得したり画像をアップロードしたりした経験があれば、気づかないうちにFTPを利用していたかもしれません。また、FTPクライアントを使ってFTPファイルサーバーに直接接続したことがある方もいるでしょう。
これらの操作を行うには、ファイルをホストしているリモートサーバーにFTPサーバーソフトウェアがインストールされている必要があります。
自宅用のLinuxサーバー、Webサーバー、ゲームサーバーなど、どんなサーバーを構築する場合でも、システム間でデータを転送する最もシンプルな方法はFTPです。
UbuntuへのFTPサーバーのインストール
UbuntuへのFTPサーバーのインストールは非常に簡単です。中でもおすすめなのが「vsftpd」です。以下の手順に従って、vsftpdを使ったUbuntu上のFTPサーバーをインストール・設定していきましょう。
1. vsftpdをインストールする
すでにvsftpdがインストールされている場合もあります。確認するには、ターミナルウィンドウを開いて以下のコマンドを入力します。
sudo apt list --installed
リストの下の方にvsftpdが見つかるはずです。見つからない場合は、次のコマンドでインストールしましょう。
sudo apt install vsftpd
インストールが完了したら、vsftpdの設定に移ります。まずは元の設定ファイルのコピーを作成しておきましょう。こうしておけば、何か問題が起きたときにデフォルトの設定を復元できます。
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf_default
コピーができたら、次のコマンドでサービスを起動します。
sudo systemctl start vsftpd
さらに、サーバーが自動起動するよう以下のコマンドで有効化します。
sudo systemctl enable vsftpd
これでvsftpdのインストールは完了し、設定作業に入れます。
2. FTPユーザーを作成する
最初に必要なのはFTPユーザーアカウントです。このアカウントがあれば、任意のFTPクライアントからvsftpd経由でサーバー上のファイルにアクセスできます。ターミナルで以下を入力してください。
sudo useradd –m username
※「username」は任意のユーザー名に置き換えてください。
sudo password username
ユーザー名とパスワードを設定したら、動作確認のためアカウントのホームフォルダにテストファイルを作成します。
cd /home/username
sudo nano testfile.txt
初めてUbuntuのFTPサーバーに接続したとき、testfile.txtが表示されれば成功です。
3. UbuntuのFTPサーバーを保護する
接続を確立する前に、UbuntuでFTPポートが開放されていることを確認する必要があります。デフォルトでは、セキュリティ上の理由からufw(Uncomplicated Firewall)によってポートは閉じられています。
ポート20経由のアクセスを許可するには、次のコマンドを使用します。
sudo ufw allow 20/tcp
別のファイアウォールを使用しているディストリビューションの場合や、独自のファイアウォールを導入している場合は、各ドキュメントを参照してポートを開放してください。
また、ユーザーがファイルをアップロードできるように設定する必要があります。これは設定ファイルで行えます。編集用に開きましょう。
sudo nano /etc/vsftpd.conf
「write_enable」を見つけてコメントを解除し、「YES」に設定されていることを確認します。
write_enable=YES
Ctrl+Xで終了し、Yキーで保存します。
公開向けのFTPサーバーでは、各ユーザーのアクセス範囲を制限することが重要です。chroot機能を使えば、各ユーザーを自分のホームディレクトリ内に制限できます。vsftpd.conf内で以下の行を見つけてコメント記号(#)を削除し、コメントを解除してください。
chroot_local_user=YES
同様にCtrl+Xで終了し、Yキーで保存します。
複数のユーザーがいる場合は、リストで管理する方がスマートです。
まず、テキストエディタでvsftpd.chroot_listを開きます。
sudo nano /etc/vsftpd.chroot_list
ここに、各自のフォルダ内に制限したいユーザー名を列挙します。保存して終了したら、vsftpd.confに戻り、chroot_local_user=YESがコメントアウトされていることを確認します。
#chroot_local_user=YES
代わりに、以下の行のコメントを解除します。
chroot_list_enable=YES
そして次の行もコメントを解除します。
chroot_list_file=/etc/vsftpd.chroot_list
設定は以下のようになります。
再度保存して終了します。最後に、FTPサービスを再起動しましょう。
sudo systemctl restart vsftpd.service
続いて、hostnameコマンドでUbuntuサーバーのホスト名を確認します。このホスト名を使ってFTPサーバーに接続できます。IPアドレスを使いたい場合はip addressコマンドを実行し、表示されたアドレスを控えておきましょう。
4. 暗号化された接続:FTP+SSL=FTPS
SSL/TLSを使用して、UbuntuのFTPサーバーとの間の通信を強制的に暗号化することも可能です。
vsftpd.confファイル内の「SSL encrypted connections」に関する記述を探し、以下の行を追加します。
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ファイルを保存して終了すれば、FTPクライアントで接続プロトコルとしてFTPSを指定できるようになります。
5. UbuntuにFTPクライアントをインストールする
別のシステムからは、コマンドラインツールまたはデスクトップアプリを使ってUbuntuのFTPサーバーに接続できます。
Linuxでは、ターミナルから次のコマンドでサーバーにアクセスできます。
sudo ftp hostname
「hostname」は必ずご自身のサーバーのホスト名に置き換えてください。IPアドレスを使うこともできます。
sudo ftp ipaddress
プロンプトが表示されたら、先ほど設定したユーザー名とパスワードを入力します。その後、getコマンドやputコマンドでデータを転送できます。
もっと直感的な操作を望む場合や、他のOSからFTPサーバーにアクセスしたい場合は、FTPクライアントが必要です。中でも定評があるのが「FileZilla」です。オープンソースのソリューションで、Windows(サーバー版もあり)、macOSに対応し、Linux向けにも32bit版と64bit版が提供されています。残念ながら、UbuntuなどのLinuxディストリビューション向けのFileZilla FTPサーバー版は存在しません。
ダウンロード: FileZilla(無料)
FileZillaクライアントを使ってUbuntuのFTPサーバーに接続するには、アプリをインストールして起動し、以下の手順に従います。
- ファイル > サイトマネージャ をクリック
- 新しいサイト をクリック
- 右側のペインで FTP を選択
- FTPSを使用する場合は 暗号化 で TLS を選択
- ホスト にホスト名またはIPアドレスを入力し、ポート を追加
- ログオンタイプ の ユーザー と パスワード にアカウント情報を入力
- 接続 をクリック
これで、UbuntuのFTPサーバーとの間で自由にデータのアップロード(put)やダウンロード(get)が行えます。移動したいファイルをドラッグ&ドロップするだけです。
別のFTPクライアントを使用する場合も、手順はほぼ同じですが、詳細については各アプリのドキュメントを確認してください。
UbuntuでFTPサーバーを構築できました
Ubuntuのデスクトップ版とサーバー版のどちらを使用していても、これでFTPサーバーが稼働しています。Webページのアップロードから重要なデータへの簡単なアクセス提供まで、さまざまな用途に活用できます。FTPを使えば、サーバーマシンに物理的にアクセスすることなく、必要なときにいつでもデータを取得できます。
-
UbuntuにPipをインストールする方法を徹底解説【Python 2/3対応】
Linuxには実に多くのパッケージマネージャーが存在します。Ubuntuにはaptが標準搭載されていますが、プログラミング言語の多くも独自のパッケージマネージャーを持っています。Node.jsにはnpm、Rubyにはgem、そしてPythonにはpipが用意されています。 Pipは「Python Installs Packages」の略で、Python Package Index(PyPI)からパッケージを簡単にインストールできるツールです。他のインデックスからインストールすることも可能ですが、通常必要となるパッケージの大半はPyPIで入手できます。pipを使ってパッケージを導入するには、ま
-
Windows 10 / 11 に Ubuntu をインストールする3つの方法【WSL・USB起動・仮想マシン】
Windows 10 や Windows 11 のパソコンで Ubuntu Linux を使ってみたいと思ったことはありませんか?この記事では、その手順を初心者の方にもわかりやすく解説します。 実は、Windows 上で Ubuntu をインストールして動かす方法はひとつだけではありません。本記事では、代表的な3つのアプローチをご紹介します。① Windows Subsystem for Linux(WSL)を使って Linux コマンドを実行する方法、② USB メモリから直接起動する方法、そして③ 仮想マシン(VM)上で動かす方法です。 それぞれの特徴と手順を順番に見ていきましょう。 方法