sun.net.ftp.FtpClient 是一个FTP连接工具,比较坑的一点是该工具只能运行在FTP被动模式下。
FTP连接模式
FTP连接模式分为被动模式和主动模式。
FTP连接分为命令端口和数据端口。
FTP主动模式
命令端口号:21
数据端口号:20
FTP被动模式
命令端口号:21
数据端口号:1024-65535
问题
代码中使用了sun.net.ftp.FtpClient 连接工具实现文件同步到FTP服务器上,但是该连接工具只支持被动模式,客户服务器不允许放行这么多端口号。
解决方法
1、修改代码使用Apache提供的FTPClient工具,设置FTP连接方式为主动方式,防火墙放开20/21两个端口。
2、不修改代码,修改FTP配置,指定FTP被动模式传输端口范围。
(1)/etc/vsftpd.conf中添加如下配置
pasv_enable=YES
pasv_min_port=5000 (根据现场安全要求,自己填写)
pasv_max_port=6000(根据现场安全要求,自己填写)
(2)FTP服务器防火墙配置中放开相应的端口号