如何在 Java 中通过 TLS/SSL (FTPS) 服务器连接到 FTP

2022-09-05 00:34:53

我被困在通过TLS / SSL(FTPS)服务器连接到FTP。我正在使用SimpleFTP库,通过能够在没有SSL的情况下连接FTP服务器,但无法连接FTPS。

它在第2行(ftp.connect)给了我这个错误,

SimpleFTP 在连接到 FTP 服务器时收到未知响应:
220----------欢迎使用 Pure-FTPd [privsep] [TLS] ----------

并且我使用以下代码

SimpleFTP ftp = new SimpleFTP();

// Connect to an FTP server on port 21.
ftp.connect("xxx.xxx.xxx.xxx", 21, "username", "pwd");
//getting error at (ftp.connect) above line

// Set binary mode.
ftp.bin();

// Change to a new working directory on the FTP server.
ftp.cwd("web");
ftp.disconnect();

答案 1

SimpleFTP 类/库根本不支持 TLS/SSL。


请改用 Apache Commons Net 库中FTPSClient

请参阅 FTPClient 类的官方示例,只需将 替换为 .FTPClientFTPSClient

FTPSClient ftpClient = new FTPSClient();
ftpClient.connect(host);
ftpClient.login(user, password);

该类默认为显式 TLS/SSL(推荐)。在极少数情况下,您需要隐式 TLS/SSL,请使用新的 FTPSClient(true)。FTPSClient


答案 2