急遽FTPサーバーを建てる必要があったので、CentOS7&vsftpdで建てた時のメモです。
セキュリティを考慮せず建てたので、あまり参考にはしないでください。
本来なら下記を考慮した方が良いと思います。
FTPサーバーの環境
FTPサーバーの構築
vsftpdのインストール
# yum -y install vsftpd
vsftpdの設定
# cd /etc/vsftpd # cp -a vsftpd.conf{,.org} # vi vsftpd.conf ※以下変更点だけ書きます。 # Anonymousの接続は許可しないに変更 anonymous_enable=YES →anonymous_enable=NO # パッシブモード有効化&ポート範囲を追記 # pasv_enableはDefaultっでYESなので書かなくても良いらしい pasv_enable=YES pasv_min_port=60100 pasv_max_port=60200
サービス起動
# systemctl start vsftpd # systemctl status vsftpd ● vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled) Active: active (running) since 月 2023-10-30 20:10:05 JST; 7s ago Process: 6711 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS) Main PID: 6712 (vsftpd) CGroup: /system.slice/vsftpd.service mq6712 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
Firewalldの設定
21,60100-60200/tcpを許可する
# firewall-cmd --add-service=ftp --permanent # firewall-cmd --add-port=60100-60200/tcp --permanent # firewall-cmd --reload # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens192 sources: services: ssh dhcpv6-client ports: 993/tcp 143/tcp 21/tcp 60100-60200/tcp ...
動作確認
無事接続できました。
注意点:Windowsの標準FTPクライアントはPassive接続に対応していない
Windowsに標準インストールされているFTPクライアントはPassive接続に対応していないそうです。
FTPクライアントのオプションやコマンド一覧を確認しても、Passiveで接続するようなものが存在しません。
>where ftp.exe C:\Windows\System32\ftp.exe
>ftp -h FTP サーバー サービス (デーモンとも呼ぶ) を実行するコンピューターとの間で、 ファイルの送受信を行います。FTP は対話的に使用できます。 FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-A] [-x:sendbuffer] [-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [host] -v リモート サーバーの応答を表示しません。 -n 最初の接続時に自動ログインを行いません。 -i 複数ファイルの転送中に、対話的なメッセージ表示を 無効にします。 -d デバッグを有効にします。 -g ファイル名のグロビングを無効にします (GLOB コマンドを参照)。 -s:filename FTP コマンドを記述したテキスト ファイルを指定します。 これらのコマンドは、FTP の開始後に自動実行されます。 -a データ接続のバインド時に、いずれかのローカル インターフェイ スを使用します。 -A 匿名でログインします。 -x:send sockbuf SO_SNDBUF の既定のサイズである 8192 を上書きします。 -r:recv sockbuf SO_RCVBUF の既定のサイズである 8192 を上書きします。 -b:async count 既定の非同期数である 3 を上書きします。 -w:windowsize 既定の転送バッファー サイズである 65535 を上書きします。 host 接続先のリモート ホストのホスト名または IP アドレス を指定します。 メモ: - mget および mput コマンドには、それぞれ yes/no/quit の意味を表す y/n/q を 指定します。 - コマンドを中止するには Ctrl+C キーを押します。
>ftp ftp> ? コマンドは省略することができます。コマンド: ! delete literal prompt send ? debug ls put status append dir mdelete pwd trace ascii disconnect mdir quit type bell get mget quote user binary glob mkdir recv verbose bye hash mls remotehelp cd help mput rename close lcd open rmdir