sun.net.ftp.FtpClient踩坑

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服務器防火牆配置中放開相應的端口號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章