raspberry-pi beginner 15 min

Raspberry Pi: transfer files with FileZilla over SFTP

Move files between your computer and a Raspberry Pi with FileZilla over SFTP. No FTP server, no extra packages, no plaintext passwords on the network.

Code available for: Python
Published Sep 22, 2026

Every Pi project hits the same moment: the script works, the camera saved a 40 MB video, the SQLite database has a week of data in it, and now you need that file on your actual computer. Poking at it over SSH with scp works but you end up retyping the command every time. FileZilla gives you a window with both filesystems in it and drag and drop. It is free, it runs on Windows, macOS, and Linux, and it has been the answer to “how do I get files off the Pi” for as long as the Pi has existed.

The trap here is in the name. FileZilla sounds like FTP, most tutorials say FTP, and plain FTP is the wrong protocol. It sends your password across the network unencrypted and it needs a second server installed on the Pi. SFTP is the same idea with none of that: it runs over the SSH connection your Pi already has, port 22, same password, encrypted end to end. You do not install anything on the Pi for this. Not one package.

What you need

Needed

  • A Raspberry Pi running Raspberry Pi OS with SSH enabled. If you set
  • FileZilla Client on your computer. Download it from
  • The Pi’s IP address or hostname. hostname.local works if mDNS is

Nice to have

  • An anti-static wristband (cheap insurance around the Pi’s GPIO header)
  • A small screwdriver kit for the case and camera ribbon clips

Connect

Open FileZilla and fill the quick-connect bar at the top:

  • Host: sftp://192.168.1.50 (the Pi’s address; the sftp:// prefix is what tells FileZilla to use SSH and port 22)
  • Username: your Pi login (e.g. pi on older installs, whatever you created on a fresh one)
  • Password: your Pi login password
  • Port: 22 (optional; the sftp:// prefix implies it)

Click Quickconnect. The first connection pops a dialog about an unknown host key. That is the server’s fingerprint and it is normal on a first connect. Check it matches the key you would get by running ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key.pub on the Pi if you want to be thorough, then click OK. Left panel: your computer. Right panel: the Pi.

For a connection you will reuse, save it properly: File >> Site Manager >> New Site, fill the same fields under protocol SFTP, and give it a name. Quickconnect is fine for one-offs, but Site Manager keeps passwords and survives reboots.

The layout

Two panels, each with a directory tree on top and a file list below. The transfer is drag and drop in either direction. A few habits that make this painless:

  • The current directories are shown in the path boxes above each panel. Type directly into them to jump (e.g. /home/pi/videos).
  • Right-click in the file list for actions beyond copy: delete, rename, get permissions.
  • Transfers queue along the bottom. Big files move at whatever speed your network does; a Pi on Wi-Fi does 10 to 20 MB/s, wired does 100 or better.
  • If a transfer stalls on a huge file, right-click it in the queue and pick Process Queue to retry just that one.

A useful detail: the “keep timestamps” option under Transfers exists so backups pulled from the Pi keep their original modification dates instead of becoming “the moment I copied them.”

The code

There is no code for this one, which is the point. The closest thing to a script is the SFTP URL format that works anywhere FileZilla accepts a host string:

sftp://pi@192.168.1.50/home/pi/

…and the same transfer from the command line, when you want it inside a script instead of a GUI:

# copy a file from the Pi to your computer
scp pi@192.168.1.50:/home/pi/videos/timelapse.mp4 ./

# copy a whole directory, recursively
scp -r pi@192.168.1.50:/home/pi/exports ./

(scp uses the same SSH transport as SFTP, so if FileZilla connects, these work with no further setup.)

What you learned

  • SFTP runs over the SSH server your Pi already runs: no new packages, no new port, no plaintext password on the network.
  • FileZilla’s quick-connect bar gets you a one-off transfer in under a minute, and Site Manager saves the connection for the next hundred.
  • The pattern in 1 sentence: two panels, drag between them, done.

When something breaks

  • “Connection refused.” SSH is off on the Pi. Enable it: sudo raspi-config >> Interface Options >> SSH, then reboot. Or from another machine, check the service: systemctl status ssh.
  • “Connection timed out” or nothing at all. The IP is wrong or the Pi dropped off Wi-Fi. Ping it first: ping 192.168.1.50. If the ping fails, fix the network before blaming FileZilla.
  • “Auth failed” with the right password. On Bookworm a fresh install may have password SSH logins disabled in favor of keys. Log in on the console once and run sudo raspi-config >> System Options, or add your public key from your computer with ssh-copy-id pi@192.168.1.50. Also check caps lock, because SFTP does not guess.
  • “Permission denied” when writing. You are trying to copy into a directory owned by root (e.g. /var/www). Copy to /home/pi instead, or change ownership once: sudo chown pi:pi /var/www/html.
  • It connects but the right panel is empty. You are in a directory with no read permission, or the hidden files are hidden: View >> Show hidden files.

What to build next

If the goal is a shared drive for the whole household instead of a one-to-one transfer, the Samba NAS tutorial is the upgrade: the Pi becomes a network drive that shows up in Windows Explorer with no client at all. The SQLite logging tutorial produces databases you will want to pull off the Pi and query on your desktop, and FileZilla is the easy way to fetch them. For reaching the Pi from outside your network, the WireGuard tunnel tutorial pairs with this: FileZilla over WireGuard is a file transfer that works from a hotel. —Brian