lftp is an excellent ftp client able to deal with SSL/TLS and even torrent files.

Examples

Update remote directory

Updating remote directory
1
lftp ftp://${USER}@${HOST} -e "mirror -e -R ${SRC} ${DST} ; quit"

FAQ

Login failed: 550 SSL/TLS required on the control channel

It is possible that when using a self-signed certificate at the server level, the following error message appear:

1
Login failed: 550 SSL/TLS required on the control channel

It is due to the self-signed certificate being considered as invalid, as a result the control channel cannot be encrypted. The connection is then establishd without encryption, but the server can be forced by its configuration to reject unencrypted connections.

If this happens, you need to tell lftp to not verify certificates:

1
set ssl:verify-certificate off

If the client does not automatically switch to an encrypted mode, it can be forced with:

1
set ftp:ssl-force on