确保vsftpd(CentOS常用FTP服务)已启动并设置开机自启。使用以下命令检查服务状态:
systemctl status vsftpd
若未运行,启动服务并设置开机自启:
systemctl start vsftpd
systemctl enable vsftpd
ping命令测试与FTP服务器的IP连通性(如ping 192.168.1.100)。telnet或nc命令测试FTP控制端口(默认21)是否开放(如telnet 192.168.1.100 21或nc -zv 192.168.1.100 21)。若端口未开放,需检查防火墙或网络设备是否阻止了该端口。CentOS默认使用firewalld作为防火墙,需开放FTP相关端口:
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-port=50000-50050/tcp
firewall-cmd --reload
firewall-cmd --list-all | grep -E "21/tcp|50000-50050/tcp"
SELinux可能限制FTP访问用户主目录或执行写入操作,需调整相关策略:
setenforce 0
setsebool -P ftp_home_dir 1
setsebool -P allow_ftpd_full_access 1
chcon -Rv --type=public_content_t /path/to/ftp/directory
编辑/etc/vsftpd/vsftpd.conf文件,确保关键配置正确:
anonymous_enable=NO
chroot_local_user=YES
pasv_enable=YES
pasv_min_port=50000 # 与防火墙开放的端口范围起始值一致
pasv_max_port=50050 # 与防火墙开放的端口范围结束值一致
local_enable=YES
write_enable=YES
修改后重启vsftpd服务使配置生效:
systemctl restart vsftpd
useradd -d /data/ftp/username ftpuser # 创建用户并指定主目录
passwd ftpuser # 设置密码
chown -R ftpuser:ftpuser /data/ftp/username # 设置主目录所有权
chmod 755 /data/ftp/username # 设置主目录权限(755为推荐值)
/etc/ftpusers(禁止FTP登录的用户列表)或/etc/vsftpd/user_list(若配置了userlist_enable=YES且userlist_deny=YES,则列表内的用户无法登录)。使用FTP客户端(如FileZilla、WinSCP或命令行ftp)连接服务器,确保配置正确:
若仍无法解决,查看系统日志和vsftpd日志获取详细错误信息:
tail -f /var/log/messages
tail -f /var/log/secure
日志中会提示具体错误(如“530 Login incorrect”表示用户名/密码错误,“550 Permission denied”表示目录权限不足),根据日志信息进一步调整配置。