温馨提示×

怎么调试Debian vsftp

小樊
39
2026-08-26 11:32:34
栏目: 智能运维

在 Debian 上调试 vsftpd(Very Secure FTP Daemon) 时,一般从 日志、配置、权限、网络、SELinux/AppArmor 几个方面入手。下面给你一个比较系统的调试流程(从最常见到进阶)。


一、确认 vsftpd 是否已正确安装和运行

dpkg -l | grep vsftpd
systemctl status vsftpd

如果没启动:

systemctl start vsftpd
systemctl enable vsftpd

查看是否监听端口(默认 21):

ss -lntp | grep :21

二、开启 vsftpd 调试日志(最关键)

1️⃣ 编辑配置文件

sudo nano /etc/vsftpd.conf

2️⃣ 打开调试日志

# 打开日志
xferlog_enable=YES
log_ftp_protocol=YES
debug_ssl=YES

⚠️ 注意
log_ftp_protocol=YES 会记录所有 FTP 命令,只建议在调试时开启。

3️⃣ 重启服务

sudo systemctl restart vsftpd

三、查看 vsftpd 日志

常见日志位置

Debian 下通常是:

/var/log/vsftpd.log

如果没看到,检查一下:

ls /var/log | grep ftp

没有日志?可能是 syslog 方式

grep ftp /var/log/syslog

或:

journalctl -u vsftpd

四、常见错误及调试方法

1️⃣ 能连但不能登录

检查是否允许本地用户登录

local_enable=YES

检查是否禁止 root 登录(默认禁止)

userlist_enable=YES
userlist_deny=YES

查看用户列表:

cat /etc/vsftpd.user_list

✅ 解决方法:

  • 把用户从 userlist 移除
  • 或设置 userlist_deny=NO

2️⃣ 530 Login incorrect

常见原因:

  • 密码错误
  • PAM 配置问题

查看 PAM:

cat /etc/pam.d/vsftpd

测试本地登录是否正常:

su - 用户名

3️⃣ 上传失败 / 权限拒绝

检查目录权限

ls -ld /home/ftp

vsftpd 配置

write_enable=YES

如果是匿名用户:

anon_upload_enable=YES
anon_mkdir_write_enable=YES

目录权限示例

chown ftpuser:ftpuser /home/ftp
chmod 755 /home/ftp

4️⃣ 被动模式(Passive FTP)失败

客户端卡在 LIST 或超时。

配置被动端口

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

防火墙放行:

ufw allow 30000:31000/tcp

云服务器还要放行 安全组


五、使用命令行 FTP 客户端调试

ftp localhost

或:

lftp localhost

测试步骤:

  • 登录
  • pwd
  • ls
  • put
  • get

⚠️ 如果 ls 失败,90% 是被动模式问题。


六、AppArmor(Debian 常见坑)

查看是否被限制:

aa-status

临时测试:

systemctl stop apparmor
systemctl restart vsftpd

如果恢复正常,说明是 AppArmor 限制。

解决方式:

  • 修改 /etc/apparmor.d/usr.sbin.vsftpd
  • 或把 vsftpd 设为 complain 模式

七、快速排错清单(推荐)

✅ 是否启动
✅ 是否监听 21
✅ 是否开启日志
✅ 是否允许 local_enable
✅ 是否 write_enable
✅ 是否被动端口 + 防火墙
✅ 是否 AppArmor


八、最小可用配置示例(调试用)

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
xferlog_enable=YES
log_ftp_protocol=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

如果你愿意,可以把 具体报错信息(如 530 / 500 / 425)或 vsftpd.log 内容贴出来,我可以帮你精确定位问题。

0