Quick Links

When you are in the process of setting up remote file transfer capabilities for your employees, you want things to be as simple and secure as possible. With that in mind, which is better, FTPS or SFTP? Today's SuperUser Q&A post has the answers for a curious reader's question.

Today’s Question & Answer session comes to us courtesy of SuperUser—a subdivision of Stack Exchange, a community-driven grouping of Q&A web sites.

Screenshot courtesy of kojihachisu (Flickr).

The Question

SuperUser reader user334875 wants to know what the difference is between FTPS and SFTP, and which one is better:

I am trying to set up a system for four of my employees who work remotely so that they can transfer files. I also need it to be secure. Is SFTP better than FTPS? What is the difference between the two?

What is the difference between the two and which one is better?

The Answer

SuperUser contributors NuTTyX and Vdub have the answer for us. First up, NuTTyX:

They are two completely different protocols.

FTPS is FTP with SSL for security. It uses a control channel and opens new connections for the data transfer. As it uses SSL, it requires a certificate.

SFTP (SSH File Transfer Protocol/Secure File Transfer Protocol) was designed as an extension of SSH to provide file transfer capability, so it usually uses only the SSH port for both data and control.

In most SSH server installations you will have SFTP support, but FTPS would need the additional configuration of a supported FTP server.

Followed by the answer from Vdub:

FTPS (FTP/SSL) is a name used to provide a number of ways that FTP software can perform secure file transfers. Each way involves the use of a SSL/TLS layer below the standard FTP protocol to encrypt the control and/or data channels.

Pros:

  • Widely known and used
  • The communication can be read and understood by a human
  • Provides services for server-to-server file transfer
  • SSL/TLS has good authentication mechanisms (X.509 certificate features)
  • FTP and SSL/TLS support is built into many internet communications frameworks

Cons:

  • Does not have a uniform directory listing format
  • Requires a secondary DATA channel, which makes it hard to use behind firewalls
  • Does not define a standard for file name character sets (encodings)
  • Not all FTP servers support SSL/TLS
  • Does not have a standard way to get and change file or directory attributes

SFTP (SSH File Transfer Protocol) is a network protocol that provides file transfer and manipulation functionality over any reliable data stream. It is typically used with the SSH-2 protocol (TCP port 22) to provide secure file transfer, but is intended to be usable with other protocols as well.

Pros:

  • Has a good standards background which strictly defines most (if not all) aspects of operations
  • Has only one connection (no need for a DATA connection)
  • The connection is always secured
  • The directory listing is uniform and machine-readable
  • The protocol includes operations for permission and attribute manipulation, file locking, and more functionality

Cons:

  • The communication is binary and can not be logged “as is” for human reading
  • SSH keys are harder to manage and validate
  • The standards define certain things as optional or recommended, which leads to certain compatibility problems between different software titles from different vendors.
  • No server-to-server copy and recursive directory removal operations
  • No built-in SSH/SFTP support in VCL and .NET frameworks

Have something to add to the explanation? Sound off in the comments. Want to read more answers from other tech-savvy Stack Exchange users? Check out the full discussion thread here.