SSH / SFTP vs FTPS vs HTTPS Upload: Choosing Secure File Transfer

admin

Data Security

In this Article:

Direct Answer

If you only have 10 seconds: use SFTP for server to server and admin work, HTTPS upload for browser and API based transfers, and FTPS only when a partner or legacy system demands it and you can control both ends.

TLDR: What To Pick

  • SFTP is the default choice for admins, cron jobs, and automated transfers to Linux and BSD servers.
  • HTTPS upload is the right pick for web apps, APIs, and one time browser uploads.
  • FTPS is a niche option for older FTP workflows, regulated partners, and some managed file transfer appliances.

Gap Statement: What This Write Up Fixes

Most coverage of secure file transfer has three problems:

  • It compares acronyms but does not show real setups on Windows, macOS, and Linux.
  • It ignores odd failure modes: passive ports, SSH host keys, TLS handshake errors.
  • It forgets the “before and after” story: local encryption, endpoint hygiene, and what happens once the file lands.

Here you get side by side decisions, concrete steps for each option, and extra protection tips using tools like NewSoftwares Folder Lock and USB Secure where they fit.

What SFTP, FTPS, And HTTPS Upload Actually Are

Short version:

  • SFTP runs over SSH on a single port, wraps file operations into SSH packets, and supports strong modern ciphers such as AES and ChaCha20.
  • FTPS is classic FTP plus TLS, as defined in RFC 4217, with explicit and implicit modes that still rely on separate control and data channels.
  • HTTPS upload is plain HTTP over TLS (the same thing your browser uses for banking) with file data sent as POST or PUT bodies.

All three can be safe when configured correctly. The real split is:

  • How much control you have over client and server.
  • How firewall friendly you need the solution to be.
  • Whether users are humans in a browser or scripts on a host.

Quick Comparison Snapshot

Feature SFTP FTPS HTTPS Upload
Underlying tech SSH FTP + TLS HTTP + TLS
Default port 22 21 (explicit) or 990 (implicit) 443
Firewall friendliness High Low to medium (extra data ports) Very high
Client UX Admin tools, scripts FTP clients, legacy workflows Browser forms, curl, SDKs
Modern cipher suites Yes Depends on TLS config Yes (TLS 1.2, TLS 1.3)
Integrity protection Built in Built in through TLS Built in through TLS
Best primary use Admin, backups, automation Old ecosystems, managed FT solutions Web apps, APIs, user uploads

Use Case Chooser

Use this to make a decision in under a minute.

Scenario Best option Why
Linux server to Linux backup host SFTP SSH already present, one port, strong auth
Windows desktop users sending files to your server FTPS or HTTPS Familiar FTP clients, or browser uploads
Web app where users upload PDFs and images HTTPS upload Native to HTTP, easy to secure with TLS
Partner insists on “FTP” but accepts TLS FTPS (explicit) Meets policy, keeps compatibility
Automated nightly upload to vendor SFTP host SFTP Vendor already exposes SFTP endpoint
Sharing encrypted archive via browser to cloud app HTTPS + Folder Lock TLS in transit, local AES container at rest

Prerequisites And Safety Checklist

Before you touch any config:

  1. Decide data class
    Identify whether you move public, internal, or regulated data (health, finance, legal).
  2. Check OS and environment
    • Servers: version of Linux, BSD, or Windows Server.
    • Clients: Windows 10+, macOS 12+, or current Linux distro.
    • Ensure OpenSSH or a maintained FTP server is available, or web stack with TLS.
  3. Make a clean backup path
    • Keep a separate, access controlled backup target.
    • Do not reuse the transfer server as the only backup.
  4. Plan at rest protection
    • For sensitive files, encrypt them before transfer with AES based tools like Folder Lock.
    • For portable drives, protect the USB itself with USB Secure.
  5. Decide on identity
    • Will you use username plus password, SSH keys, mutual TLS, or API tokens.
    • For SFTP, prefer SSH keys.
    • For HTTPS APIs, prefer short lived tokens.

Part 1: SFTP In Practice

SFTP Setup On A Linux Server

When SFTP Is The Smart Default

Pick SFTP when:

  • You control a Unix style server.
  • You can open port 22 through your firewall.
  • Users are admins, cron jobs, or backend services.

SFTP gives you:

  • Strong encryption and integrity through SSH.
  • Simple firewall rules.
  • Built in user isolation with chroot or restricted shells.

SFTP Setup On A Linux Server

Assume an Ubuntu or Debian like host.

Step 1: confirm SSH server

sudo systemctl status ssh
  • If it is inactive, install and start:
sudo apt update
sudo apt install openssh-server
sudo systemctl enable --now ssh

Gotcha: some hosting providers call the service sshd. Adjust the name if ssh fails.

Step 2: create a transfer account

sudo adduser sftpuser

Give it a strong password if you cannot use keys yet.

Step 3: force SFTP only for that user

Edit /etc/ssh/sshd_config and append:

Match User sftpuser
 ForceCommand internal-sftp
 ChrootDirectory /home/sftpuser
 PasswordAuthentication yes
 X11Forwarding no
 AllowTcpForwarding no

Then fix permissions:

sudo chown root:root /home/sftpuser
sudo mkdir /home/sftpuser/data
sudo chown sftpuser:sftpuser /home/sftpuser/data

Reload SSH:

sudo systemctl reload ssh

Gotcha: if ChrootDirectory is not owned by root, SFTP logins will fail silently.

Step 4: open firewall

sudo ufw allow 22/tcp
sudo ufw reload

Verify with ss -tlnp | grep 22.

SFTP Client Workflow On Windows (WinSCP)

  1. Install WinSCP from the official site.
  2. Click “New Session”.
  3. Set:
    • File protocol: SFTP.
    • Host name: your server DNS name.
    • Port number: 22.
    • User name: sftpuser.
  4. For password auth, enter the password.
    For key auth, load your .ppk or OpenSSH key in the “Advanced” auth section.
  5. Connect. On first connect, WinSCP will show the SSH host key fingerprint. Confirm it out of band before accepting.
  6. Drag and drop files into /data.

Verification: after upload, use the server shell:

ls -l /home/sftpuser/data
sha256sum /home/sftpuser/data/yourfile.bin

Compare checksums against your local hash.

Part 2: FTPS When You Cannot Avoid It

FTPS Setup Workflow

When FTPS Still Makes Sense

Use FTPS only when:

  • A partner has an existing “FTP over TLS” endpoint you must use.
  • An appliance exposes FTPS only for compliance reasons.
  • A Windows shop depends on IIS FTP server with TLS.

FTPS wraps FTP with TLS so credentials and file contents are encrypted, but FTP’s multi channel design remains.

Key choices:

  • Explicit FTPS: starts as plain FTP on port 21, then upgrades with AUTH TLS.
  • Implicit FTPS: expects TLS from the first packet, usually on port 990.

Firewalls must allow control plus data ports.

FTPS Server Sketch: Vsftpd On Linux

Very short outline for explicit FTPS:

  1. Install server:
sudo apt install vsftpd
  1. Generate a TLS cert (or use a real one):
sudo openssl req -x509 -nodes -days 365 \
 -newkey rsa:2048 \
 -keyout /etc/ssl/private/vsftpd.pem \
 -out /etc/ssl/private/vsftpd.pem
  1. Edit /etc/vsftpd.conf and set:
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
pasv_min_port=40000
pasv_max_port=40100
  1. Open ports 21 and 40000 to 40100 on the firewall.
  2. Restart vsftpd:
sudo systemctl restart vsftpd

Gotcha: passive ports must match between server config, firewall, and any upstream load balancer.

FTPS Client Basics In FileZilla

  1. Open FileZilla.
  2. Site Manager > New Site.
  3. Protocol: FTP.
  4. Encryption: Require explicit FTP over TLS.
  5. Fill host, port 21, username, password.
  6. Connect and accept the TLS certificate after you verify fingerprints.

If you see 425 Can't open data connection, your passive port range is blocked. Open it on both host and firewall.

Part 3: HTTPS Uploads For Web And APIs

When HTTPS Upload Is The Clean Answer

Choose HTTPS upload when:

  • Users are in a browser.
  • You control a web backend.
  • You want built in TLS features: HSTS, content security policies, and modern cipher suites.

Typical shapes:

  • Web form posting a multipart file to /upload.
  • Client app uploading via REST to /api/upload.
  • Direct to object storage (S3, Azure Blob, etc) using pre signed URLs.

Basics: Secure Upload Endpoint

High level plan:

  1. Force HTTPS only.
  2. Use TLS 1.2 or TLS 1.3 with strong ciphers.
  3. Put the upload path behind auth and rate limits.
  4. Enforce maximum size and type server side.

Example for a simple Nginx reverse proxy fronting an upload service:

server {
 listen 443 ssl http2;
 server_name files.example.com;

 ssl_protocols TLSv1.2 TLSv1.3;
 ssl_ciphers HIGH:!aNULL:!MD5;
 add_header Strict-Transport-Security "max-age=31536000" always;

 location /upload {
  client_max_body_size 200m;
  proxy_pass http://backend_uploads;
 }
}

Gotcha: client_max_body_size must be big enough for your largest file or users will see “413 Request Entity Too Large.”

CLI Upload Using HTTPS

Curl example:

curl -X POST https://files.example.com/upload \
 -H "Authorization: Bearer $TOKEN" \
 -F "file=@report.zip"

Verify server side:

  • Check your logs for the request.
  • Confirm saved file size and hash.
  • Serve file back only over HTTPS from a protected path.

Extra Layer: Encrypt Before You Send

Local Encryption Before Transfer

Protocols protect data in transit. They do not control every at rest risk.

NewSoftwares tools help here:

Folder Lock For Encrypted Containers And Lockers

Folder Lock provides AES 256 based encryption for files and lockers, plus features like portable lockers and secure backup.

Practical uses with SFTP, FTPS, and HTTPS:

  1. Create an encrypted locker on Windows for a set of sensitive files.
  2. Lock and close it so only the .flk container exists.
  3. Transfer that container via SFTP, FTPS, or HTTPS upload.
  4. Give the recipient the password or key over a separate channel.

This way:

  • Protocol secures the pipe.
  • Folder Lock secures the payload before and after the transfer.

USB Secure For Removable Drives

If the “file transfer” is actually handing over a USB stick, USB Secure password protects and encrypts the drive contents, blocking access on lost or stolen media.

Example workflow:

  • Copy data to a USB drive.
  • Protect it with USB Secure on your Windows machine.
  • Hand the USB to the recipient.
  • They unlock it with the password on their own system.

You can combine this with SFTP or HTTPS if the USB is only a staging step.

Common Symptoms And Fixes

SFTP Problems

Symptom Likely Cause Quick Fix
Permission denied on login Wrong password or key, or bad shell Check user, reset password, inspect logs
Connection refused SSH not running or port blocked Check sshd service, firewall rules
Host key verification failed Host key changed Confirm change, update known hosts
Upload stops at 100 percent then hangs Chroot or disk quota issue Check disk space, chroot permissions

FTPS Problems

Symptom Likely Cause Quick Fix
425 Can't open data connection Passive ports blocked Open passive range, switch to passive mode
SSL handshake failed TLS version mismatch or bad cert Enable TLS 1.2+, replace self signed cert
Directory listing empty Firewall mangling data channel Use passive, check stateful firewall rules

HTTPS Upload Problems

Symptom Likely Cause Quick Fix
Browser shows 413 Request Entity Too Large Upload size limit too low Increase client_max_body_size
Upload stops without error Reverse proxy or CDN timeout Raise timeout, chunk uploads
File corrupted after upload App decoding bug, binary/text mix Use multipart upload, check encoding

Non destructive steps first:

  • Check logs and TLS handshake details.
  • Test with a tiny text file.
  • Use curl -v to see connection stages.

Last resort steps:

  • Regenerate keys and certificates with known good settings.
  • Move to a fresh server or VM if the stack is badly misconfigured.

Proof Of Work: Measuring Your Own Transfers

You can benchmark your three options on a test network.

Template:

Test Case Size Protocol Time (Seconds) Avg Throughput
Local server to server, wired 1 GB SFTP
Same hosts, same file 1 GB FTPS
Same hosts, same file via HTTPS upload 1 GB HTTPS

Example command on Linux for SFTP:

time scp bigfile.bin sftpuser@server:/home/sftpuser/data/

For HTTPS:

time curl -X POST https://files.example.com/upload \
 -F "file=@bigfile.bin"

Record times in the table. The important point is relative performance under your real constraints, not synthetic numbers.

Structured Data Snippets

You can embed JSON LD in your page to help search engines understand the content.

HowTo For Secure SFTP Upload

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "Send a file securely with SFTP",
  "description": "Set up an SFTP account and upload a file with encryption in transit.",
  "tool": [
    { "@type": "HowToTool", "name": "SFTP client (WinSCP or FileZilla)" }
  ],
  "supply": [
    { "@type": "HowToSupply", "name": "Server with SSH enabled" }
  ],
  "step": [
    {
      "@type": "HowToStep",
      "name": "Create SFTP user",
      "text": "Create a dedicated SFTP account on the server and restrict it to a home directory."
    },
    {
      "@type": "HowToStep",
      "name": "Configure firewall",
      "text": "Open TCP port 22 on the server firewall and any upstream firewalls."
    },
    {
      "@type": "HowToStep",
      "name": "Connect with SFTP client",
      "text": "Enter host, username, and key or password in the SFTP client and connect."
    },
    {
      "@type": "HowToStep",
      "name": "Upload file and verify",
      "text": "Upload the file, then verify checksum on both client and server."
    }
  ]
}
</script>

FAQPage Snippet

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Is SFTP more secure than FTPS?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Both can be secure when configured correctly. SFTP is easier to deploy behind strict firewalls and avoids FTP data channel issues, so many teams prefer it for new setups."
      }
    },
    {
      "@type": "Question",
      "name": "When should I use HTTPS upload instead of SFTP?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Use HTTPS upload when users send files through a browser or app. SFTP is better for admin and automation tasks."
      }
    }
  ]
}
</script>

FAQs

1. Which Is Safest: SFTP, FTPS, Or HTTPS Upload?

All three can protect data with strong encryption. In real deployments, SFTP and HTTPS are easier to harden because they use single ports and modern stacks. FTPS can be safe, yet often breaks behind firewalls if data channels are misconfigured.

2. Is It Acceptable To Keep Using Plain FTP On An Internal Network?

Only if the data is low sensitivity and the network is fully isolated. Plain FTP sends credentials and data in clear text. For anything tied to customers, staff, or regulated records, move to SFTP, FTPS, or HTTPS.

3. Does SFTP Use The Same Encryption As SSH?

Yes. SFTP is a subsystem under SSH and reuses its key exchange, ciphers, and integrity checks. When you enable modern SSH ciphers and disable weak ones, SFTP benefits from the same settings.

4. Is FTPS Still Required By Any Standards?

Some older policies and managed file transfer appliances still mention “FTP over TLS” as a requirement, often based on RFC 4217. That is why FTPS remains present in banking and legacy B2B connections.

5. Can HTTPS Uploads Be As Secure As SFTP?

Yes. HTTPS, running over TLS 1.2 or 1.3, gives confidentiality, integrity, and server authentication on par with SFTP. The weak spots are usually app bugs and access control mistakes, not TLS itself.

6. How Do I Pick Between SFTP And HTTPS For Automation?

Pick SFTP when jobs already use SSH keys and the team is comfortable with Unix style tooling. Pick HTTPS when the integration happens inside an existing web stack or when you want fine grained access control with API tokens.

7. Where Does A Tool Like Folder Lock Fit Into This Picture?

Folder Lock adds strong AES 256 encryption at rest on top of any protocol, creating lockers and encrypted files you can send with SFTP, FTPS, or HTTPS. If someone gains access to the server or backup, the data remains unreadable without the passphrase.

8. Should I Still Care About SSH Host Keys For SFTP?

Yes. Host keys prevent silent man in the middle attacks. First time you connect, record the fingerprint out of band. Later, if the client warns “host key changed,” stop and verify before accepting.

9. How Do I Debug “Connection Refused” When Testing SFTP?

Check that the SSH service is running, the server listens on port 22, and your firewall allows that port. From the client, try ssh user@host from a terminal. If that fails, fix SSH first, SFTP second.

10. Is FTPS Always Harder For Firewalls?

Most of the time, yes. FTPS needs both control and data channels, and TLS can hide FTP commands from simple inspection, which confuses some network devices. Correct passive port ranges and proper stateful inspection support are key.

11. Should I Use Client Certificates With HTTPS Upload?

Client certificates give strong identity yet often increase setup effort. They work well for small sets of trusted servers or devices. For large user groups, tokens and robust authentication on top of HTTPS are easier to manage.

12. Do I Still Need Local Encryption If I Already Use SFTP Or HTTPS?

If the file content is sensitive and will sit on servers, backups, or laptops, local encryption still matters. Tools such as Folder Lock and USB Secure help protect content from theft or misuse, even if the transfer path was already encrypted.

13. Can I Mix Protocols On The Same Project?

Yes. For example, your admins can sync data over SFTP while customers upload new content over HTTPS. The important point is to apply consistent logging, monitoring, and at rest protection across them.

14. What Is The Fastest Option Among SFTP, FTPS, And HTTPS?

In many networks the difference is small compared to latency and bandwidth caps. Performance usually depends more on implementation quality than on the protocol label. Benchmark on your real path using sample files and measure.

15. What Should I Document Once I Settle On One Option?

At minimum, record:

  • Which protocol and ports are in use.
  • Cipher and TLS or SSH settings.
  • User onboarding and offboarding steps.
  • Troubleshooting steps for common errors.

That record turns your secure transfer choice into a repeatable, auditable practice rather than a one time experiment.

Conclusion: Select The Right Tool For The Job

The best secure file transfer protocol SFTP, FTPS, or HTTPS upload depends entirely on the use case, client type, and network constraints. For new, automated, server-centric workflows, SFTP is the cleanest choice. For user-facing applications, HTTPS upload is the native standard. FTPS should be reserved for compatibility needs. Regardless of the protocol chosen, supplementing with strong at rest encryption from tools like NewSoftwares Folder Lock ensures the payload remains protected from end-to-end.

Secure Browser Sessions on Mobile: When to Use In-App Secure Browser

How Certificate Authorities, Validity, and Revocation Protect Users