UbuntuでFTPが行えるようにする方法をご紹介します。
vsftpdをインストール&設定を行います。
条件
- Ubuntu 18.04.2 LTS
- vsftpd: version 3.0.3
vsftpdインストール
インストール可能なパッケージの「一覧」を更新
$ sudo apt update
vsftpdをインストール
$ sudo apt install vsftpd
インストール確認(バージョン確認)
$ vsftpd -v vsftpd: version 3.0.3
設定
vsftpdの設定編集
$ sudo vi /etc/vsftpd.conf
今回は以下のように設定しました。
# vsftpdをスタンドアロンモードで起動する。 listen=YES # IPv4ソケットの代わりにIPv6ソケットをリスンする。 listen_ipv6=NO # 匿名ユーザのログインを許可する。 anonymous_enable=NO # ローカルユーザのログインを許可する。 local_enable=YES # ファイルシステムを変更するFTPコマンドを許可する。 write_enable=YES # ローカルユーザがディレクトリやファイルを作成する際に使用されるumaskを指定する。 local_umask=022 # ユーザが新しいディレクトリに初めて移動したとき、メッセージを表示する。 dirmessage_enable=NO # ディレクトリリストを表示するとき、時間をローカルタイムで表示する。 use_localtime=YES # ファイルのアップロードとダウンロードをログファイルに記録する。 xferlog_enable=YES # アクティブ (ポート) モード時の、サーバ側が使用するデータ転送用ポート番号の指定方法を定義する。 connect_from_port_20=NO # ユーザーのログイン ディレクトリをそのユーザーのルートディレクトリに変更する。 # ログインディレクトリの外側にアクセスできなくする。(ただし、chroot_list_fileで指定したファイルにユーザーを記述すれば可能) chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list allow_writeable_chroot=YES # vftpdがファイルアクセスを要求しないときに使用するディレクトリを指定する。 secure_chroot_dir=/var/run/vsftpd/empty # vsftpdが使用するPAMサービス名を指定する。 pam_service_name=vsftpd # SSL暗号化接続に使用するRSA証明書の場所を指定する。 rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem # vsftpd用の秘密鍵ファイルを指定する。 rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key # FTP over SSLを有効にする。 ssl_enable=NO # PASVデータコネクションで使用する最小/最大ポート(FWでポートを開ける必要あり) pasv_min_port=60001 pasv_max_port=60001
ユーザー追加
FTP用のユーザーを追加
$ sudo adduser USER_NAME
すべてのディレクトリにアクセス許可をするユーザーを設定
$ sudo vi /etc/vsftpd.chroot_list
今回は空ファイルのみ作成しました。
全てのディレクトリにアクセスしたい場合、当該ファイルにユーザー名を記述します。
vsftpdの設定反映
vsftpdの再起動
$ sudo service vsftpd restart
動作確認
以下のような表示になればOKです。
$ telnet localhost 21 Trying ::1... Connected to localhost.localdomain. Escape character is '^]'. 220 (vsFTPd 3.0.3)
以下のコマンドで終了します。
Ctrl + ] telnet> q
FW設定
必要に応じてサーバーのFW設定を行います。
今回は、ポート21、60001を開けました。
(FTPのパッシブモードで、この2つのポートを使用します。)
FTPの実行
FTPソフト(FFFTP、WinSCPなど)を用いてFTPを行います。
ここでは、WinSCPによる接続を行います。
ログイン画面で以下を設定します。
- 転送プロトコル:FTP
- 暗号化:暗号化なし
- ホスト名:接続先ホスト(IPアドレス)
- ポート番号:21
- ユーザ名:接続するユーザー
- パスワード:接続するユーザーのパスワード
保存ボタンを押して情報を保存後、ログインボタンを押します。
ログインが実行され、「/<ルート>」ディレクトリが表示されます。
(設定により、ユーザーのルートディレクトリになっています。)
アップロードしたいファイルを選択し、「アップロード」を選択すると、対象ファイルがサーバーへアップロードされます。
参考
vsftpdの設定(vsftpd.conf)
http://www.nina.jp/server/redhat/vsftpd/vsftpd.conf.html
ftp接続でrefusing to run with writable root inside chrootが出た時の対処法
https://mussyu1204.myhome.cx/wordpress/it/?p=107