Linux服务器FTP用户登录成功但目录列表失败,求排查遗漏配置
解决FTP目录列表失败的排查指南
兄弟,我来帮你搞定这个FileZilla登录成功但目录列表失败的问题!结合你已经在UFW开放2121-2142端口的操作,大概率是vsftpd的被动模式配置、用户权限或者端口规则没踩对,我给你列几个必查的关键点:
1. 被动模式核心配置检查
vsftpd的被动模式是导致目录列表失败的高发区,先确认你的vsftpd.conf里有没有正确配置:
- 必须开启被动模式并指定端口范围(和你UFW开放的一致):
注意这几行前面不能有pasv_enable=YES pasv_min_port=2121 pasv_max_port=2142#注释符,否则等于没生效。 - 如果服务器有公网IP,一定要指定
pasv_address,不然vsftpd可能返回内网IP,导致FileZilla连不上被动端口:
要是用的是动态域名,也可以加pasv_address=你的公网IP地址pasv_addr_resolve=YES让vsftpd自动解析域名对应的IP。
2. 用户家目录权限检查
就算配置对了,用户没权限访问自己的家目录也白搭:
- 先查看用户家目录的权限和归属:
ls -ld /home/你的FTP用户名 - 确保权限至少是
700(最安全,只有用户自己能访问),归属是该用户本身。如果不对,用这两条命令修正:chmod 700 /home/你的FTP用户名 chown 你的FTP用户名:你的FTP用户名 /home/你的FTP用户名 - 如果你开了
chroot_local_user=YES(限制用户只能访问家目录),必须再加一行allow_writeable_chroot=YES,否则vsftpd会因为家目录可写而拒绝访问。
3. 查看vsftpd日志定位具体问题
日志是排查问题的利器,直接看vsftpd的错误日志就能知道根因:
- 默认日志路径是
/var/log/vsftpd.log,实时查看日志的命令:
然后用FileZilla尝试登录并刷新目录,看日志里有没有报错(比如权限不足、被动端口连接失败等),这能帮你精准定位问题。tail -f /var/log/vsftpd.log
4. UFW端口规则补全
你开放了被动端口,但别忘了FTP的控制端口21也需要开放(登录用的是这个端口),检查UFW规则:
- 查看当前UFW状态:
ufw status - 如果没看到
21/tcp的允许规则,赶紧加上:
确保所有规则都是允许入站的TCP端口。ufw allow 21/tcp
5. 客户端被动模式确认
最后检查下FileZilla的设置:打开「编辑」→「设置」→「传输设置」,确认「被动模式」是选中状态(默认是,但有时候会被误改)。
最后一步:重启vsftpd服务
不管改了哪个配置,都要重启服务让设置生效:
systemctl restart vsftpd
内容的提问来源于stack exchange,提问作者Muthu
相关产品推荐
相关产品推荐

