Skip to main content
Updated May 8, 2026 There’s nothing Raff-specific about file transfer — every method below uses your existing SSH credentials and VM IP. If you can SSH into the VM, you can transfer files to it. Pick the tool that fits the job: All five use the standard SSH/SFTP protocol on TCP port 22 of the VM’s public IPv4. If your VM is in a VPC without a public IP, transfer through the Platform Router’s port forwarding or a bastion VM.

Before you start

  • A VM with a public IPv4 (or a port-forwarded VPC route)
  • An SSH key on your local machine, or the password you set with Reset password
  • The VM’s public IP — copy it from the VM detail page
Throughout this page, examples use:
  • 1.2.3.4 — placeholder for your VM’s public IPv4
  • root — the default Linux user; substitute your sudo user if you’ve changed it
  • ~/.ssh/id_ed25519 — your SSH private key path on your local machine

SCP — one-shot file copy

scp (secure copy) is the simplest tool — one command, copies one file or one directory, then exits.

Upload — local → VM

Download — VM → local

Common flags

When to skip SCP

  • Big directory treesscp -r doesn’t resume on interruption. Use rsync instead.
  • Many small filesscp opens a separate transfer per file. rsync or a tar-pipe is much faster.
  • Files larger than a few GBscp works but has no progress / resume. Use rsync --progress instead.

SFTP — interactive session

sftp opens a long-lived FTP-like session over SSH. Useful for browsing and ad-hoc up/downloads in one connection.
Inside the session, common commands: A typical workflow: cd into the right remote dir, lcd to the local source, then put / get until you’re done — far faster than re-running scp for each file.

rsync — sync directories, resume on failure

rsync is the right tool for anything bigger than “a couple of files”. It only transfers changed bytes, resumes interrupted runs, optionally compresses on the wire, and handles permissions correctly.

Basic syntax

The trailing / on local-dir/ matters: with the slash, it copies the contents into /var/www/; without it, it copies the directory itself as /var/www/local-dir/. Same convention applies to remote paths.

Useful flags

Resume-after-failure pattern

If a long rsync dies mid-transfer (network blip, laptop closed, SSH timeout), just run the same command againrsync figures out what’s already there and only transfers the rest. With -P it picks up partial files at the byte level.

When you’d use a tar-pipe instead

For one-shot transfer of a huge tree of small files, a tar-pipe can outperform rsync because it avoids the per-file roundtrips:
Use this when you’re copying once (initial seed), and use rsync when you’ll re-sync.

FileZilla — cross-platform GUI

FileZilla runs on macOS, Windows, and Linux. Drag-and-drop with the same SSH credentials.

Add a connection profile

  1. File → Site Manager → New Site
  2. Fill in:
    • Protocol: SFTP – SSH File Transfer Protocol
    • Host: 1.2.3.4 (your VM’s public IP)
    • Port: 22 (or your port-forward, e.g. 2222)
    • Logon Type: Key file
    • User: root (or your sudo user)
    • Key file: browse to ~/.ssh/id_ed25519 (the private key)
  3. Connect
The first connection prompts to trust the VM’s host fingerprint — accept it; it’s recorded for future sessions.

Day-to-day use

The split-pane shows your local files on the left, the VM’s files on the right. Drag-and-drop in either direction starts a transfer; the queue at the bottom shows progress. Tools → Speed limits lets you cap bandwidth.

WinSCP — Windows-only GUI

WinSCP is the established Windows file-transfer client — same idea as FileZilla but with a more Explorer-like UI.

Add a session

  1. Session → New Session
  2. File protocol: SFTP
  3. Host name: your VM’s public IP
  4. Port number: 22
  5. User name: root
  6. Advanced → SSH → Authentication → Private key file: select your .ppk file (WinSCP needs a PuTTY-format key)
    • If you have an OpenSSH-format key, WinSCP prompts to convert it on first use, or use puttygen to convert manually
  7. Login
The first connection prompts to trust the host key — accept it.

Day-to-day use

Same Explorer-style interface as FileZilla. Drag-and-drop, browse remote / local in parallel, queue multiple transfers. WinSCP also has a built-in text editor for editing remote config files in place.

Quick reference — which tool when

Common issues

SSH refused your key. Causes:
  • Wrong key path (-i ~/.ssh/id_ed25519 vs the one you actually authorized on the VM)
  • Wrong username (root vs your sudo user)
  • Key permissions too open — chmod 600 ~/.ssh/id_ed25519 on macOS/Linux
  • The public key isn’t in ~/.ssh/authorized_keys on the VM — see Connect via SSH
The VM isn’t reachable on port 22:
  • Confirm the VM is active (not paused or stopped) on the dashboard
  • Confirm the IP is correct — VMs that lose their auto-assigned public IP get a different one when re-attached
  • Check the Firewall — if you’ve attached a custom group, verify TCP 22 is allowed inbound from your IP
  • Test with ssh -v root@1.2.3.4 first; if SSH times out too, the issue is networking, not file transfer
Several knobs to try:
  • Add -z (rsync) or -C (scp) for compression on text-heavy files; for already-compressed binaries (.gz, .zip, .mp4), compression slows things down
  • Use rsync -avP instead of scp -r — rsync’s per-file overhead is much lower
  • Check if the bottleneck is your local upload, not the VM (speedtest-cli)
  • For huge files, split-and-parallel: split -b 1G big.tar.gz part- then rsync the parts
scp and sftp reset to default umask permissions; rsync -a preserves them. Use rsync with -a if perms matter (executable scripts, key files, etc.). After upload, you can fix in the guest with chmod / chown.
Likely a broken symlink in the source tree. Either fix the source (delete the dangling symlink) or switch to rsyncrsync -a follows symlinks correctly with -L, or copies them as symlinks with -l.
Use df -h over SSH first to confirm there’s enough free space. For VMs running tight on disk, attach a Volume and transfer to the volume mount point instead.

Connect via SSH

The same credentials and IP that file transfer uses.

Authentication

SSH keys vs passwords, generating and adding keys.

Volumes

Attach extra disk capacity for big file transfers.
Last modified on May 8, 2026