Ubuntuの環境を作ったけど、ファイルのやり取りができないのは不便です。
そこでFile Transfer Protocol(通称FTP)サーバを入れてみます。
FTPサービスのインストール
FTPサーバ一式をインストールします。
今回はvsftpdというFTPサーバを使ってFTPサーバを構築します。
$ sudo apt install vsftpd -y
設定ファイルを編集します。
$ 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のダウンロードサイトから入手する
サイトが表示されたら、最新リリースのリンクをクリックする
インストール用のファイルをダウンロードする
ダウンロードしたexeファイルを実行してインストールする
セットアップはデフォルトのままでOKです。
FFFTPを起動して、FTPで接続する
FFFTPを起動すると、ホスト一覧ダイアログが開きます。
新規でセットアップした場合は、まだ接続先のFTPサーバが登録されていないので、ホスト一覧は空っぽです。
ここに今回立ち上げたFTPサーバの接続設定を登録します。
「新規ホスト」ボタンを押します。
- ホストの設定名:自分で識別できる名前を付ければOKです。
- ホスト名(アドレス):接続先のFTPサーバのIPまたはホスト名
- ユーザ名とパスワードを入力してください。ここで指定するユーザ名とパスワードは、Windowsのものではなく、Ubuntu側のユーザ名とパスワードです。
入力が終わったら、OKボタンを押してください。
先程空っぽだったホスト一覧に追加されました。
接続したいFTPサーバが選択されていることを確認し、接続ボタンを押してください。
暗号化の状態の保存について確認するダイアログが表示されるかもしれません。
その時は、はいを選択してください。
下のような画面が表示されれば、FTP接続成功です!
画面左側がクライアント側、右側がFTPサーバ側のファイルリストになります。
今回だと、左側がホストOSのWindows側、右側はゲストOSのUbuntu側です。
これでファイルが自由にやりとり出来ますね!
トラブシューティング
私の場合、一発で接続成功!とは行きませんでしたので、こんな感じで調査しました。
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
コメント