若vsftpd服务未运行,客户端无法建立连接。需通过以下命令检查并管理服务状态:
# 检查服务运行状态
sudo systemctl status vsftpd
# 若未运行,启动服务
sudo systemctl start vsftpd
# 设置开机自启动(避免重启后失效)
sudo systemctl enable vsftpd
若服务启动失败,可通过sudo systemctl cat vsftpd.service查看execstart指令,排查具体错误。
Ubuntu的UFW防火墙或系统SELinux可能阻止FTP端口(默认21)的流量,需调整规则:
sudo ufw allow 21/tcp # 控制连接
sudo ufw allow 20/tcp # 数据连接(主动模式)
sudo ufw allow 50000:50100/tcp # 被动模式端口范围(根据配置调整)
sudo ufw reload # 重新加载规则
sudo setsebool -P ftp_home_dir 1 # 临时生效
# 永久生效需修改/etc/selinux/config文件(将SELINUX=enforcing改为permissive)
```。
配置文件/etc/vsftpd.conf的参数设置不当是常见原因,需重点检查以下关键参数:
anonymous_enable=NO # 禁止匿名访问(根据需求调整)
local_enable=YES # 允许本地用户登录
write_enable=YES # 允许上传文件
chroot_local_user=YES # 限制用户仅能访问其主目录(增强安全性)
pasv_enable=YES # 启用被动模式
pasv_min_port=50000 # 被动模式最小端口
pasv_max_port=50100 # 被动模式最大端口
修改配置后,需重启服务使更改生效:sudo systemctl restart vsftpd。
ftpuser):sudo chown ftpuser:ftpuser /home/ftpuser # 设置所有者
sudo chmod 755 /home/ftpuser # 设置权限
userlist_enable=YES,需确保用户存在于/etc/vsftpd.user_list中,否则无法登录。若客户端位于防火墙或NAT后,被动模式可能因端口未开放而失败。需:
/etc/pam.d/vsftpd文件未被修改,包含以下基础认证规则:auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd.user_list onerr=succeed
auth required pam_shells.so
若以上方法无法解决,可通过查看vsftpd日志获取详细错误信息:
sudo tail -f /var/log/vsftpd.log # 实时查看日志
日志中会提示具体错误原因(如“cannot change directory”“permission denied”),针对性解决即可。