ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

FTPサーバー vsftpd

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

apt-get install vsftpd

設定ファイル

/etc/vsftpd.conf

環境設定ファイル

#変更
#匿名ユーザーのログインは許可しない。
anonymous_enable=NO
#ユーザが新しいディレクトリに初めて移動したとしてもメッセージは表示しない。
dirmessage_enable=NO
#アスキーモードのアップロードを有効にする。
ascii_upload_enable=YES
#アスキーモードのダウンロードを有効にする。
ascii_download_enable=YES
#ローカルユーザーのルートを各自のホームに変更する。
chroot_local_user=YES
#chroot_listを有効にする。ファイルはデフォルト(chroot_list_file=/etc/vsftpd/chroot_list)になる。
chroot_list_enable=YES
#ホストへのアクセスを制御しない。(EC2のSecurity Groupsで設定する方がよい)
tcp_wrappers=NO
#ActiveFTPを無効にする。
connect_from_port_20=NO
#wu-ftpdではなく,vsftpdログ形式でログを記録する。
xferlog_std_format=NO

#追加
#PASV FTPを有効にする。
pasv_enable=YES
#PASVモード接続先IPアドレスをホスト名から取得する。
pasv_addr_resolve=YES
#Elestic IPを設定する。(インスタンスのPublic DNSを指定するとPASVモードでの接続はできない。
#バージョン2.0.4以降であれば、IPが固定でなくても pasv_addressにDDNSを書くことで動的なIPに対応できる。)
pasv_address=<固定IP>
#PASVモード接続時の最小ポート番号を設定する。(確認した空きポートの範囲で設定)
pasv_min_port=60001
#PASVモード接続時の最大ポート番号を設定する。(確認した空きポートの範囲で設定)
pasv_max_port=60010
#ローカルタイムを使用する。(デフォルトはGMT)
use_localtime=YES
#.(ドット)で始まるファイルを隠さない。
force_dot_files=YES
  1. <固定IP> : サーバーのパブリックIPアドレスを設定する。
  2. サーバー側に21ポート以外に60001-60010ポートをオープンする必要がある。

vsftpの起動・停止

sudo systemctl stop vsftpd.service
sudo systemctl start vsftpd.service

FTPサーバーの状態確認

$ systemctl status vsftpd.service
● vsftpd.service - vsftpd FTP server
   Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: e
   Active: active (running) since Thu 2017-10-26 06:51:50 UTC; 10min ago
  Process: 18896 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, 
 Main PID: 18902 (vsftpd)
    Tasks: 1
   Memory: 2.7M
      CPU: 29ms
   CGroup: /system.slice/vsftpd.service
           └─18902 /usr/sbin/vsftpd /etc/vsftpd.conf

Oct 26 06:51:50 ftptest systemd[1]: Starting vsftpd FTP server...
Oct 26 06:51:50 ftptest systemd[1]: Started vsftpd FTP server.

FTPログイン後、書き込みができない場合

エラーになる:550 Permission denied.
/etc/vsftpd.confファイルの以下の部分を修正する。

# Uncomment this to enable any form of FTP write command.
#write_enable=YES

FTP接続後、ls命令などが帰って来ない場合、

PASSIVEモードになっている可能性が有るため、モードを切り替えてみる

$ passive
  1. 実行するたびにON/OFFが切り替わる。

SFTP接続設定

/etc/vsftpd.confの以下の部分を削除し、SSLを有効にする。

ssl_enable=YES

sftpで接続

ftpとの違いユーザIDを指定して実行する必要がある。

$ sftp userid@127.0.0.1
userid@127.0.0.1's password:
Connected to 127.0.0.1.
sftp>


vsftpの軌道設定

sudo chkconfig vsftpd on

anonymousのrootフォルダー変更

#anonymousログイン時のrootフォルダーを指定する
anon_root=/media/share
  1. anonymous_enable=YES の設定が必要

インストールの削除

apt-get purge vsftpd

サービスの手動開始

/sbin/service vsftpd start

使用可能なポート確認

cat /proc/sys/net/ipv4/ip_local_port_range

AWSLinuxFTPを構築した時の内容を追加

Passive Mode時の設定で

pasv_enable=YES
pasv_addr_resolve=YES
pasv_address={}
pasv_min_port=60001
pasv_max_port=60010
  1. AWSの場合、セキュリティグループにFTP用の21以外にPassive Mode用ポート60001-60010もオープンする必要がる。