宝塔面板FTP连不上:Pure-FTPd被动端口与权限排查

    发布时间:2026-09-20 05:00 更新时间:2026-09-20 05:00 阅读量:0

    用宝塔面板建站,很多人习惯用FTP上传文件。但装好Pure-FTPd之后,客户端经常卡在“正在连接”“读取目录列表失败”,或者能登录却看不到文件。这类问题九成出在三个地方:被动模式的端口范围没放行、防火墙或云安全组拦了数据连接、FTP用户的目录归属与权限不对。下面按排查顺序讲清楚每一步该看什么、改什么。

    先分清主动与被动:为什么FTP比SSH更容易被防火墙挡住

    FTP和普通服务不一样,它用两条连接:一条控制连接(默认21端口)发命令,一条数据连接传文件。主动模式(PORT)下由服务器主动回头连客户端,客户端在NAT后面基本连不上;被动模式(PASV)下服务器告诉客户端“你连我这个端口”,端口是随机的,范围不固定就会被防火墙当成陌生流量丢掉。所以现代客户端默认都走被动模式,而服务器必须明确一段被动端口范围并在防火墙放行,这是FTP连不上的头号原因。

    宝塔面板的Pure-FTPd默认没有开被动模式,需要手动在配置里加一段。打开宝塔面板 → 软件商店 → Pure-FTPd → 设置 → 配置修改,找到配置文件(通常是 /www/server/pure-ftpd/etc/pure-ftpd.conf),加入或修改以下几行,具体以实际版本生成的配置文件为准:

    # 开启被动模式并指定端口范围
    PassivePortRange 39000 40000
    

    服务器公网IP,让服务器在PASV应答里返回正确地址

    ForcePassiveIP 你的公网IP

    改完保存,回到宝塔软件管理里重载或重启Pure-FTPd。只改配置不放行端口,等于白改,下一步就是防火墙。

    防火墙与云安全组:21端口通了不代表能传文件

    很多人只放行了21端口,结果能登录、一到列表或上传就失败。控制连接走21,数据连接走的是上面设置的39000-40000。需要在三个层面依次确认:服务器本机防火墙、云厂商安全组、以及宝塔面板自带的防火墙插件(如果启用了)。

    以常见的firewalld为例,放行21和被动端口段:

    # 放行FTP控制端口
    firewall-cmd --permanent --add-port=21/tcp
    

    放行被动模式端口段

    firewall-cmd --permanent --add-port=39000-40000/tcp firewall-cmd --reload

    查看已放行端口,确认生效

    firewall-cmd --list-ports

    如果系统用的是iptables或ufw,命令写法不同,按当前系统实际规则处理。别忘了云服务器控制台里的安全组——它和系统防火墙是两套独立规则,只放行一边仍然连不上。阿里云、腾讯云等控制台里添加入方向规则:21/tcp 以及 39000-40000/tcp,授权对象按需填写,测试阶段可先放开自己的IP。

    排查时可以用一条命令快速判断端口是否真的通:在本地电脑执行 telnet 服务器IP 21,能连上说明控制连接没问题;再用客户端开被动模式试传一个小文件。如果21通、传文件失败,基本就是被动端口段没放行。部分客户端还能关闭被动模式试试,但多数家用网络下主动模式走不通,还是老实放行端口更稳。

    用户权限与目录归属:能登录却看不到文件的常见原因

    端口都通了,还是“读取目录列表失败”或登录后目录为空,就要看FTP用户本身。宝塔创建的FTP账号默认会被限制在对应网站的目录里,用户和目录归属必须匹配,否则连目录都进不去。

    先确认FTP用户是否存在、家目录指向哪里。宝塔里可以在面板 → FTP 页面查看,也可以用命令查系统用户:

    # 查看FTP用户信息(宝塔通常以网站名或自定义名建用户)
    grep ftp用户名 /etc/passwd
    

    查看网站目录归属,宝塔Web目录一般是www用户

    ls -ld /www/wwwroot/你的站点目录

    常见坑有这几个:目录属主是root而FTP用户不是root,导致无法写入;目录权限被设成700,同组用户也进不去;宝塔FTP账号绑定的目录写错,指向了不存在的路径。正确做法是让目录属主为www、权限保持755,FTP用户加入www组即可读写,具体取舍参考站点自身需求。若你手动改过目录权限,可用chown和chmod修正:

    # 把站点目录交给www用户与组
    chown -R www:www /www/wwwroot/你的站点目录
    

    目录755、文件644是较通用的安全设置

    find /www/wwwroot/你的站点目录 -type d -exec chmod 755 {} \; find /www/wwwroot/你的站点目录 -type f -exec chmod 644 {} \;

    另外,Pure-FTPd日志能直接告诉你失败原因,位置一般在 /www/server/pure-ftpd/var/log/ 或通过面板日志查看,出现“550”“530”这类返回码时对照官方文档判断是权限还是认证问题。

    小结与下一步建议

    FTP连不上,按“被动端口是否配置并放行 → 云安全组与本机防火墙是否一致 → FTP用户与目录归属权限是否正确”三步走,基本能覆盖绝大多数情况。改完配置记得重启Pure-FTPd,只重载面板不重启服务有时不生效。如果你只是偶尔传几个文件,也可以考虑用宝塔面板自带的文件管理器或SFTP替代FTP,少一层端口放行的麻烦,安全性也更好一些。

    继续阅读

    📑 📅
    WordPress邮件发不出去:wp_mail走SMTP还是sendmail与SPF/DKIM检查 2026-09-20
    宝塔面板SSL证书部署后HTTP/2没生效:协议开启、ALPN检查与Nginx版本差异 2026-09-19
    WordPress改域名后打不开:siteurl与home改错的救援步骤 2026-09-19
    Cloudflare 后真实访客 IP 丢失:CF-Connecting-IP 与 Nginx real_ip 配置 2026-09-19
    Nginx日志按天切割实操:logrotate配置与不生效排查 2026-09-19
    robots.txt写错导致整站被屏蔽:误写排查与sitemap配合 2026-09-20
    WordPress后台上传图片报错:权限、临时目录与尺寸限制逐项定位 2026-09-20
    Nginx缓存与浏览器缓存协同:expires、Cache-Control与强刷不生效的原因 2026-09-20
    Nginx try_files 到底怎么走:root/alias 差异与伪静态失效排查 2026-09-21
    宝塔面板 open_basedir、禁用函数与上传目录协同配置 2026-09-21