いろいろググってみましたが、デフォルトの設定ではまず動かないようです。こんなメッセージが出て起動できません。
Job for vsftpd.service failed. See 'systemctl status sftpd.service' and 'journalctl -xn' for details.
vsftpd.conf を下のように設定したら無事起動できました。
listen=NO listen_ipv6=YES
これって変な設定です。今の環境では、ipv6 は使ってないし、listen=NO というのも変です。
さらにログインしようとすると 530 Permission denied. と出てしまいました。
これは、
userlist_enable=YES
userlist_deny=NO
となっていたせいで、/etc/vsftpd/user_list に使用するユーザを追加していなかったためです。
\# vsftpd userlist
\# If userlist_deny=NO, only allow users in this file
\# If userlist_deny=YES (default), never allow users in this file, and
中略
games
nobody
user \# <== 追加 (実際のユーザidに変えること)
起動方法ですが
sudo systemctl start vsftpd.service
とします。
もし、localhost 以外からアクセスできなければファイアウォールではじかれているかもしれません。下のようにしてファイアウォールをOFFにして試してみます。
sudo systemctl stop firewalld
さらに、デフォルトでブート時に自動起動されないので次のコマンドで自動的に起動するように設定します。
sudo systemctl enable vsftpd.service
自動的に起動されているかは、ブート後に下のようにしてポート21 が LISTEN になっているかで確認できます。
[user@localhost ~]$ ss -nat State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 50 *:3306 *:* LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* ESTAB 0 0 192.168.1.70:22 192.168.1.83:49882 LISTEN 0 128 :::80 :::* LISTEN 0 32 :::21 :::* LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25
:::*
動作確認がOKだったら、下のようにしてファイアウォールで FTP を許可します。
sudo firewall-cmd --add-service=http --zone=public
これでOKかと思ったらさらに問題が発生しました。
550 Failed to open file.
553 Could not create file.
FFFTP で上のようなエラーが出てしまい GET も PUT もできません。これは、SELinux でftpd_full_access が OFF になっているためだそうです。次のようにして SELinux 自体を無効化すれば解決します。
sudo setenforce Permissive
ftpd_full_access を ON にする方法もありますが、実運用のサーバでなければこれで十分です。
同じ記事
この記事は上の記事のパクリではありません(作者が同じ)。