首先確認VSFTP服務是否正常啟動,使用命令:
sudo systemctl status vsftpd
若服務未運行,啟動服務并設置開機自啟:
sudo systemctl start vsftpd && sudo systemctl enable vsftpd
啟動失敗時,通過日志定位原因:
sudo journalctl -xeu vsftpd.service
VSFTP的主配置文件為/etc/vsftpd/vsftpd.conf
,需檢查以下關鍵參數:
listen_ipv6
:根據網絡環境設為YES
(啟用IPv6)或NO
(僅IPv4);anonymous_enable
:設為NO
(禁止匿名登錄,提升安全性);local_enable
:設為YES
(允許本地系統用戶登錄);write_enable
:設為YES
(允許用戶上傳文件);chroot_local_user
:設為YES
(限制用戶僅能訪問其主目錄,防止越權)。sudo systemctl restart vsftpd
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=10060-10070/tcp
sudo firewall-cmd --reload
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
若啟用了SELinux(getenforce
顯示Enforcing
),可能需調整以下策略:
sudo setsebool -P ftp_home_dir on
sudo setsebool -P allow_ftpd_full_access on
sudo setenforce 0
/etc/selinux/config
,將SELINUX=enforcing
改為SELINUX=disabled
,并重啟服務器。/etc/vsftpd/ftpusers
(禁止登錄列表)或/etc/vsftpd/user_list
(若userlist_enable=YES
且userlist_deny=YES
,則列表內用戶無法登錄);確認用戶名/密碼正確。write_enable=YES
(配置文件中);檢查用戶主目錄權限(應為755
,目錄所有者有寫權限):sudo chown -R ftpuser:ftpuser /path/to/ftp/directory
sudo chmod -R 755 /path/to/ftp/directory
/etc/hosts.deny
是否拒絕了客戶端IP;確認防火墻未阻止連接。使用命令查看21端口是否被其他進程占用:
sudo netstat -tuln | grep 21
若有沖突,修改VSFTP監聽端口(如改為2121),并更新配置文件中的listen_port
參數,同時在防火墻中開放新端口。
VSFTP的日志文件通常位于/var/log/vsftpd.log
(若未生成,需在配置文件中啟用xferlog_enable=YES
并指定日志路徑)。通過以下命令分析日志:
sudo grep "error" /var/log/vsftpd.log
或使用tail
實時查看最新日志:
sudo tail -f /var/log/vsftpd.log
日志中的具體錯誤信息(如“cannot locate user entry”“permission denied”)能快速定位問題根源。