Ubuntu Server搭建vsftpd后Windows无法上传文件求助(Mac正常)
解决Windows无法上传文件到Ubuntu vsftpd服务器的问题
从你的描述和配置来看,Mac切换被动模式(PASV)能正常上传,但Windows用默认的主动模式(PORT)报错425 Failed to establish connection,核心原因是主动模式下的连接建立被阻断,下面给你几个针对性的解决方案:
1. 强制Windows FTP客户端使用被动模式(最快解决)
Windows自带的ftp命令默认用主动模式,你只需要在登录后手动切换到被动模式即可:
ftp> open 188.166.238.68 Connected to 188.166.238.68. 220 (vsFTPd 3.0.3) Name (188.166.238.68:vubuivn): phuclongcms 331 Please specify the password. Password: 230 Login successful. ftp> passive # 开启被动模式 227 Entering Passive Mode (188,166,238,68,xxx,xxx). ftp> cd files 250 Directory successfully changed. ftp> put vnhconnect.pem
如果测试成功,你可以直接改用FileZilla这类图形化FTP客户端,它们默认就启用被动模式,操作更稳定,也不用每次手动输入命令。
2. 检查服务器端的防火墙/安全组配置
不管用主动还是被动模式,你需要确保Ubuntu服务器的防火墙(以及云服务商的安全组)放行对应的端口:
- 放行FTP控制端口(21):
sudo ufw allow 21/tcp - 放行主动模式数据端口(20):
sudo ufw allow 20/tcp - 放行被动模式端口范围(40000-50000):
sudo ufw allow 40000:50000/tcp - 重载防火墙规则:
sudo ufw reload
如果你用的是云服务器(比如阿里云、腾讯云等),一定要去控制台的安全组规则里添加上述端口的TCP入站权限,很多时候云安全组的限制是导致连接失败的关键。
3. 修复主动模式的潜在问题(如果需要保留主动模式)
如果你必须使用主动模式,除了放行20端口,还要检查两个点:
- 确认Windows本地防火墙没有阻止服务器主动连接到客户端的临时端口:可以暂时关闭Windows防火墙测试,若能上传,就给Windows FTP客户端添加一条入站规则,允许FTP数据连接。
- 检查vsftpd配置里的
connect_from_port_20=YES已经启用(你的配置里已经开了,这部分没问题)。
4. 确认FTP目录的权限
最后再检查一下目标目录的权限,确保phuclongcms用户有写入权限:
sudo chown phuclongcms:phuclongcms /home/phuclongcms/ftp/files sudo chmod 755 /home/phuclongcms/ftp/files
总结
优先推荐使用被动模式,因为主动模式在NAT网络环境下(比如大多数家庭/办公网络)容易遇到连接阻断问题,而被动模式的兼容性更好。按照上面的步骤操作,应该就能解决Windows无法上传的问题了。
内容的提问来源于stack exchange,提问作者Vũ Bùi Quang
相关产品推荐
相关产品推荐

