Ubuntu 16.04服务器部署Web Service遇425错误的解决方法
解决Ubuntu 16.04上FTP部署Web服务时的425 No Route to Host错误
哥们,这个Unable to build data connection: No route to host (425)错误我太熟了——本质是FTP的数据连接建立失败,尤其是被动模式下最容易踩这个坑。结合你用Visual Studio部署、WinSCP却能正常连接的情况,我给你捋几个针对性的解决步骤:
1. 先检查Ubuntu服务器的防火墙配置
Ubuntu 16.04默认用ufw作为防火墙,FTP不仅需要开放控制端口(21),还得给被动模式预留专用的端口范围:
- 开放FTP控制端口:
sudo ufw allow 21/tcp - 开放被动模式的端口范围(建议选一段连续端口,比如30000-40000):
sudo ufw allow 30000:40000/tcp - 重载防火墙让配置生效:
sudo ufw reload
2. 配置FTP服务器的被动模式参数(以vsftpd为例)
Ubuntu常用的FTP服务器是vsftpd,默认可能没正确配置被动模式的端口范围:
- 编辑vsftpd的配置文件:
sudo nano /etc/vsftpd.conf - 找到或添加以下配置项:
pasv_enable=YES # 强制开启被动模式 pasv_min_port=30000 # 被动模式起始端口 pasv_max_port=40000 # 被动模式结束端口 pasv_address=myserver.de # 填写服务器的公网域名或IP,确保客户端能解析到 - 保存退出后,重启vsftpd服务:
sudo systemctl restart vsftpd
3. 调整Visual Studio的FTP连接模式
WinSCP能正常连接,大概率是它默认用了被动模式,而VS可能没配置对:
- 在Visual Studio的发布设置里,找到FTP连接的高级选项
- 勾选「使用被动模式」(Passive Mode),保存设置后重新尝试部署
4. 检查云服务商的安全组(如果是云服务器)
如果你用的是阿里云、AWS这类云服务器,光开服务器本地的ufw还不够——得在云控制台的安全组规则里,添加允许21端口和30000-40000端口的TCP入站规则,否则云层面会直接拦截数据连接。
5. 验证被动模式是否正常工作
可以用命令行FTP工具快速测试:
ftp myserver.de # 输入用户名和密码后,执行 passive # 然后尝试列出目录 ls
如果ls能正常返回目录列表,说明被动模式配置成功,再回到VS里部署应该就没问题了。
内容的提问来源于stack exchange,提问作者KushGene
相关产品推荐
相关产品推荐

