确认FTP服务(如vsftpd)是否已启动并正常运行。使用以下命令查看服务状态:
sudo systemctl status vsftpd
若服务未运行,启动服务并设置开机自启:
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
服务未启动是FTP无法连接的常见原因。
ping命令检查客户端与服务器之间的网络连接:ping your_server_ip
若无法ping通,需排查网络线路、路由器配置或服务器IP是否正确。telnet或nc(netcat)命令测试端口是否开放:telnet your_server_ip 21
# 或
nc -zv your_server_ip 21
若端口不通,需检查防火墙或安全组设置。防火墙可能阻止FTP流量通过。根据使用的防火墙工具调整规则:
sudo ufw allow 21/tcp
sudo ufw allow 20/tcp
sudo ufw allow 30000:31000/tcp # 被动模式端口范围(需与配置文件一致)
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT
sudo service iptables save # 保存规则(CentOS 6)
部分系统需重启防火墙使规则生效。SELinux可能限制FTP访问。检查SELinux状态:
getenforce
若返回Enforcing,需调整以下布尔值:
sudo setsebool -P ftp_home_dir on # 允许FTP访问用户主目录
sudo setsebool -P allow_ftpd_full_access on # 允许FTP完全访问(可选,根据需求)
若需永久关闭SELinux(不推荐),编辑/etc/selinux/config文件,将SELINUX=enforcing改为disabled,并重启服务器。
配置文件错误是FTP无法正常工作的常见原因。以vsftpd为例,主要检查/etc/vsftpd/vsftpd.conf文件的关键参数:
listen=YES # 启用FTP服务(IPv4)
listen_ipv6=NO # 若无需IPv6,禁用
anonymous_enable=NO # 禁止匿名登录(如需允许,设为YES)
local_enable=YES # 允许本地用户登录
write_enable=YES # 允许用户上传/修改文件
chroot_local_user=YES # 将用户限制在主目录(增强安全性)
pasv_enable=YES # 启用被动模式
pasv_min_port=30000 # 被动模式最小端口
pasv_max_port=31000 # 被动模式最大端口
pasv_address=your_server_ip # 服务器公网IP(若服务器在NAT后)
修改配置文件后,重启FTP服务使更改生效:
sudo systemctl restart vsftpd
常见配置错误包括listen=NO(未监听端口)、local_enable=NO(禁止本地用户登录)或被动模式端口未开放。
ftpuser):id ftpuser # 检查用户是否存在
passwd ftpuser重置密码。/home/ftpuser)及上传目录需具备正确权限:sudo chown ftpuser:ftpuser /home/ftpuser # 所有权归FTP用户
sudo chmod 755 /home/ftpuser # 主目录权限(755为常见设置)
若用户无权限访问目录,会导致登录失败或无法上传文件。日志文件包含详细的错误信息,是排查问题的关键。常见日志路径:
vsftpd:/var/log/vsftpd.log(部分系统需开启日志功能,在配置文件中设置xferlog_enable=YES)/var/log/syslog或/var/log/messagestail命令实时查看日志:sudo tail -f /var/log/vsftpd.log
根据日志中的错误提示(如“Permission denied”“Cannot open passive connection”)针对性解决。
使用FTP客户端(如命令行ftp、lftp或图形化工具FileZilla)测试连接:
ftp your_server_ip
输入用户名和密码,检查是否能成功登录。若仍失败,根据错误提示重复上述步骤排查。
磁盘空间不足可能导致FTP服务无法正常工作。使用df命令检查磁盘使用情况:
df -h
若某分区使用率接近100%(如/根分区),需清理无用文件释放空间。