Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to connect to FTP over TLS/SSL (FTPS) server in Java

Tags:

java

ssl

ftp

ftps

I'm stuck in connecting to FTP over TLS/SSL (FTPS) server. I am using SimpleFTP library through am able to connect FTP server without SSL but could not connect FTPS.

It is giving me this error at line 2 (ftp.connect),

SimpleFTP received an unknown response when connecting to the FTP server:
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------

and am using below code

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();
like image 980
Abdul Rafay Avatar asked Mar 30 '16 08:03

Abdul Rafay


People also ask

How do I connect to an FTP server using Java?

To start using FTP with Java, you will need to create a new FTPClient and then connect and login to the server using . connect(String server, int port) and . login(String username, String password) .


1 Answers

The SimpleFTP class/library does not support TLS/SSL at all.


Use the FTPSClient class from the Apache Commons Net library instead.

See the official example for the FTPClient class and just substitute the FTPClient with the FTPSClient.

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

The FTPSClient class defaults to an explicit TLS/SSL (recommended). In a rare case you need an implicit TLS/SSL, use new FTPSClient(true).

like image 185
Martin Prikryl Avatar answered Oct 12 '22 17:10

Martin Prikryl