首先確認vsftpd服務是否正常運行,使用命令:
systemctl status vsftpd
若服務未啟動,執行以下命令啟動并設置開機自啟:
systemctl start vsftpd && systemctl enable vsftpd
檢查服務進程是否存在:
ps aux | grep vsftpd
確保vsftpd進程處于“running”狀態。
vsftpd的主配置文件為/etc/vsftpd/vsftpd.conf
,需檢查以下關鍵配置項是否正確:
anonymous_enable=NO
:禁止匿名登錄(若需允許匿名,需設置為YES
并配置匿名用戶權限);local_enable=YES
:允許本地用戶登錄;write_enable=YES
:允許用戶上傳/修改文件;chroot_local_user=YES
:限制用戶只能訪問其主目錄(提升安全性);pasv_enable=YES
:啟用被動模式(解決防火墻/NAT環境下的連接問題);pasv_min_port
/pasv_max_port
:設置被動模式端口范圍(如10000-10070
),需在防火墻中開放該端口段。systemctl restart vsftpd
。通過日志獲取具體錯誤信息是排查故障的核心,常用日志文件及查看命令:
/var/log/secure
:記錄認證失敗、權限拒絕等安全相關日志(使用tail -f /var/log/secure
實時查看);/var/log/xferlog
:記錄FTP傳輸日志(如上傳/下載記錄,使用tail -f /var/log/xferlog
查看);journalctl -xe
:查看系統日志,過濾vsftpd相關錯誤(如journalctl -u vsftpd -n 50
查看最近50條vsftpd日志)。ping
命令測試客戶端與服務器之間的網絡連通性(如ping <服務器IP>
),若無法ping通,需檢查網絡設備、線路或IP配置;telnet
或nc
命令測試FTP端口(默認21)是否開放(如telnet <服務器IP> 21
或nc -zv <服務器IP> 21
),若端口不通,需檢查防火墻或SELinux設置。CentOS默認使用firewalld
作為防火墻,需確保開放FTP相關端口:
firewall-cmd --permanent --add-port=21/tcp
;firewall-cmd --permanent --add-port=10000-10070/tcp
;firewall-cmd --reload
。iptables
,需執行:iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 10000:10070 -j ACCEPT
service iptables save && service iptables restart
。若SELinux處于enforcing
模式(默認),可能會限制FTP訪問,需調整以下策略:
setsebool -P ftp_home_dir 1
;setsebool -P allow_ftpd_full_access 1
;setenforce 0
。getsebool -a | grep ftp
。ftpuser
的主目錄為/data/ftp
,執行chown -R ftpuser:ftpuser /data/ftp
和chmod 755 /data/ftp
);/etc/vsftpd/vsftpd.conf
中anon_upload_enable=NO
(默認值);anon_mkdir_write_enable=YES
并確保匿名根目錄(如/var/ftp
)有寫權限(chmod 777 /var/ftp
)。/etc/ftpusers
文件中(該文件中的用戶禁止登錄),并驗證/etc/pam.d/vsftpd
配置是否正確;setsebool -P ftp_home_dir 1
);pasv_enable=YES
,檢查被動模式端口范圍是否在防火墻中開放,確??蛻舳嗽O置為被動模式。