UbuntuでFTPを使えるようにする

IT
この記事を読むとできること

Ubuntu環境にFTPサーバを立ち上げて、他のパソコンとファイルのやり取りができるようになる

使うもの
  • ubuntu-ja-18.04.2 (インターネット利用可能状態)
  • FTPサーバ(vsftpd)
  • FTPクライアント

Ubuntuの環境を作ったけど、ファイルのやり取りができないのは不便です。

そこでFile Transfer Protocol(通称FTP)サーバを入れてみます。

スポンサーリンク

FTPサービスのインストール

FTPサーバ一式をインストールします。
今回はvsftpdというFTPサーバを使ってFTPサーバを構築します。

$ sudo apt-get install vsftpd

設定ファイルを編集します。

$ sudo vi /etc/vsftpd.conf

設定ファイルを開いたら、次の行のコメントアウトを外してください。
具体的には、行頭の#を消します。

・write_enable=YES
・ascii_upload_enable=YES
・ascii_download_enable=YES
・ftpd_banner=Welcome to blah FTP service.

サービスを有効にして、再起動します。

$ sudo systemctl enable vsftpd
$ sudo systemctl restart vsftpd

これでFTPサービスのインストールは完了です。

これ以降は確認方法ですので、不要な方はここまでOKです。お疲れさまでした!

スポンサーリンク

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

FTPサービスが正しくインストールされて、接続できる状態かどうか確認します。

Ubuntu内から接続できるか確認

まずはサーバ内でFTP接続が成功するか確認します。

$ ftp localhost

次のようにユーザ名とパスワードを聞いてきたら成功です。FTPサービスは正常に動いています。試しにログインできるかも確認してください。
①はUbuntu上のユーザ名
②はそのユーザのパスワードです。入力しても何も表示されませんが入力できているので大丈夫です。

230 Login successful. が表示されればOKです。
FTP接続を終了する場合は、③のようにbyeと入力すると終了します。

Windowsパソコンから接続できるか確認

WindowsのパソコンからFTPで接続するには、Windows標準のFTPクライアントを使うか、専用のクライアントソフトを使うかにより手順が変わります。

オススメは、専用クライアントソフトを使う方法です。
私のオススメのソフトは、「FFFTP」です。
Unix系のシステム開発していた頃はかなりお世話になりました。

FFFTPのダウンロードサイトから入手する

FFFTP (エフエフエフティーピー) プロジェクト日本語トップページ - OSDN
FFFTPは、2ペイン型のFTPクライアントソフトです。ローカルのフォルダとFTPサーバー側のディレクトリを同期させるミラーリング機能や漢字コードの変換機能、ファイアウォールやSOCKS、ワンタイムパスワードへの対応といった機能を備えています。

サイトが表示されたら、最新リリースのリンクをクリックする

ご利用のWindowsが32bit版か64ビット版で分かれます。どちらか分からない場合は、コントロールパネル⇒システムとセキュリティ⇒システムと辿ると、システムの種類という部分にビット数が表示されます。

インストール用のファイルをダウンロードする

exe形式とzip形式が選べます。インストーラーで入れた方が楽なので、今回はexeを使いますが、お好みで。

ダウンロードしたexeファイルを実行してインストールする

セットアップはデフォルトのままでOKです。

FFFTPを起動して、FTPで接続する

ダブルクリックをして実行してください

FFFTPを起動すると、ホスト一覧ダイアログが開きます。
新規でセットアップした場合は、まだ接続先のFTPサーバが登録されていないので、ホスト一覧は空っぽです。
ここに今回立ち上げたFTPサーバの接続設定を登録します。
「新規ホスト」ボタンを押します。

  • ホストの設定名:自分で識別できる名前を付ければOKです。
  • ホスト名(アドレス):接続先のFTPサーバのIPまたはホスト名
  • ユーザ名とパスワードを入力してください。ここで指定するユーザ名とパスワードは、Windowsのものではなく、Ubuntu側のユーザ名とパスワードです。

入力が終わったら、OKボタンを押してください。

先程空っぽだったホスト一覧に追加されました。
接続したいFTPサーバが選択されていることを確認し、接続ボタンを押してください。

暗号化の状態の保存について確認するダイアログが表示されるかもしれません。
その時は、はいを選択してください。

下のような画面が表示されれば、FTP接続成功です!
画面左側がクライアント側、右側がFTPサーバ側のファイルリストになります。
今回だと、左側がホストOSのWindows側、右側はゲストOSのUbuntu側です。
これでファイルが自由にやりとり出来ますね!

今回はとりあえずFTPサーバを立ち上げることを優先したため、セキュリティの設定などが甘いです。このまま他人や外に公開しないようにしてください。

トラブシューティング

私の場合、一発で接続成功!とは行きませんでしたので、こんな感じで調査しました。

FTPサーバが正しく起動しているか

systemctlコマンドでvsftpdサービスが正しく起動しているか確認できます。
activeならまず起動はしています。しかし、設定な問題があったりすると正常に起動していない可能性があります。

$ sudo systemctl status vsftpd
● vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: e
   Active: active (running)

設定ファイル(/etc/vsftpd.conf)に誤りが無いか

ステータスがactiveでも、正しく設定フアイルが読み込まれていない場合がありますので、再度設定ファイルを確認してください。
コメントが多い設定ファイルなので、コメント行をこんな感じで隠すと確認しやすいと思います。

$ grep -v ^# /etc/vsftpd.conf

システムログにエラーが出力されていないか確認

設定に問題が無い場合は、システムログを確認してみます。何かエラーを吐いているかも知れません。

$ grep vsftpd /var/log/syslog

手動起動してコンソールにエラーが出力されないか確認

エラーに何も表示されておらず、ステータスもacviteだけど繋がらない場合は、vsftpdを手動で起動してみてください。コンソールになにかメッセージが出るかも知れません。

$ sudo /usr/sbin/vsftpd /etc/vsftpd.conf

今回は、この手動起動でやっとエラーメッセージが表示されました。
500 OOPS: config file not owned by correct user, or not a file

ファイルは間違いなくあったので、ファイルのオーナーが違う?

$ ls -l /etc/vsftpd.conf -rw-r--r-- 1 battan users 5868 8月 15 17:17 /etc/vsftpd.conf
$ sudo chown root:root /etc/vsftpd.conf
$ ls -l /etc/vsftpd.conf -rw-r--r-- 1 root root 5868 8月 15 17:17 /etc/vsftpd.conf
$ sudo /usr/sbin/vsftpd /etc/vsftpd.conf

確認してみたら、設定フアイルのオーナーがbattanになってました。
きっと設定ファイルの編集でいろいろいじってたからですね。
rootに戻したところ、エラーは出なくなり、FTPサーバも正常に起動して接続できるようになりました。

それにしても、設定ファイルのオーナーまで見ているとは… 読み取りだけできればいいと勝手に思ってました。2時間ほどハマってしまいましたorz

コメント

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