电脑之家
柔彩主题三 · 更轻盈的阅读体验

FTP被动模式怎么设置?一招解决上传卡住、连接超时问题

发布时间:2026-03-26 08:31:35 阅读:6 次

FTP传文件时,明明账号密码都对,却老是卡在“等待目录列表”或者直接报错“连接超时”,甚至上传到一半就断掉——这八成是主动模式惹的祸。家里路由器、公司防火墙、甚至笔记本自带的Windows Defender防火墙,都会把FTP主动模式的随机端口拦在外面。这时候,换成被动模式(PASV),问题往往迎刃而解。

为什么被动模式更实用?

主动模式下,FTP客户端告诉服务器:“我开了20号端口等你连”,结果你的电脑在路由器后面,外网根本连不进来;被动模式则反过来:客户端连上服务器21端口后,服务器返回一个它自己开放的随机高阶端口(比如50000–50100之间),客户端再去连那个端口传数据。整个过程都是客户端往外发起连接,天然绕过大多数家庭/办公网络的限制。

常见客户端设置方法

FileZilla(最常用):
打开软件 → 顶部菜单【编辑】→【设置】→ 左侧选【连接】→【FTP】→【被动模式】→ 勾选“强制使用被动模式”。
如果还连不上,可以再点【被动模式】下的【指定IP地址】,填你公网IP(适合有固定IP的用户),普通家用直接留空即可。

CuteFTP / WinSCP:
WinSCP里进入站点设置 →【高级】→【FTP】→ 找到“传输模式”,选“被动”;CuteFTP在站点属性→【连接】选项卡里,勾选“使用被动FTP(PASV)”。

命令行ftp工具怎么办?

Windows自带的命令行ftp默认只支持主动模式,不支持PASV切换,建议换用更现代的工具,比如:
安装 curl 后这样用:

curl -v -u 用户名:密码 ftp://your-ftp-server.com/ --ftp-create-dirs -T localfile.txt

它会自动协商使用被动模式。或者直接改用 lftp(Linux/macOS默认带,Windows可装):

lftp -u 用户名,密码 ftp://your-ftp-server.com
lftp> set ftp:passive-mode true
lftp> put localfile.txt

服务器端也要配合?

如果你自己搭了vsftpd或Pure-FTPd,光改客户端还不够。比如vsftpd.conf里要确认这几行开着:

pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50100
# 如果服务器在NAT后(比如阿里云ECS),还要指定对外IP:
pasv_address=你的公网IP

改完记得重启服务:sudo systemctl restart vsftpd

说白了,被动模式不是什么高深技术,就是让数据连接也“由内向外”发起一次——跟我们用微信发文件、用钉钉传资料一个道理:不等对方来敲门,自己伸手把文件递过去。