Skip to content

SFTP Output

Uploads Parquet files to a remote SFTP server.

How it works

  1. Serializes record batches to Parquet.
  2. Connects via SSH and uploads to the configured remote path.

Configuration

yaml
data_sinks:
  sink:
    Sftp:
      host: sftp.example.com
      port: 22
      username: user
      password: secret
      remote_path: "/data/output"

Configuration variables

VariableDefaultDescription
host(required)SFTP server hostname
port22SSH port
username(required)SSH username
passwordPassword authentication
private_key_pathPath to SSH private key
remote_path(required)Remote directory for uploads
formatparquetOutput format

Authentication

Use either a password or an SSH private key. Prefer private-key auth for long-lived pipelines. For security best practices, we strongly advise against storing the password in skippr.yml. Use environment variable interpolation instead: replace the password value with your own ${ENV_VAR} reference.

The relevant part of skippr.yml looks like this:

yaml
data_sinks:
  warehouse:
    Sftp:
      password: "${SFTP_PASSWORD}"

Set the env var before running skipprd:

macOS / Linux

bash
export SFTP_PASSWORD="secret"

Windows PowerShell

powershell
$env:SFTP_PASSWORD = "secret"

Windows Command Prompt

cmd
set SFTP_PASSWORD=secret

Troubleshooting

SymptomFix
authentication failedVerify the username, password or private key path, and any host-based access controls.
uploads failCheck remote_path, available disk space, and whether the SSH user can create files in that directory.

This site is source-available under PolyForm Shield 1.0.0