web-dev-qa-db-ja.com

JavaでFTP over TLS / SSL(FTPS)サーバーに接続する方法

FTP over TLS/SSL(FTPS)サーバーへの接続が行き詰まっています。 SSLなしでFTPサーバーに接続できるが、FTPSに接続できなかったため、SimpleFTPライブラリを使用しています。

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();
8
Abdul Rafay

SimpleFTPクラス/ライブラリはTLS/SSLをまったくサポートしていません。


代わりに Apache Commons NetライブラリFTPSClient class を使用してください。

FTPClientクラスの公式例 を参照して、FTPClientFTPSClientに置き換えてください。

_FTPSClient ftpClient = new FTPSClient();
ftpClient.connect(Host);
ftpClient.login(user, password);
_

FTPSClientクラスのデフォルトは、明示的なTLS/SSLです(推奨)。まれに、暗黙のTLS/SSLが必要な場合は、 new FTPSClient(true) を使用します。

23
Martin Prikryl