Connect an SFTP Server to Cashmere

Cashmere can automatically ingest new content from an SFTP server you own or have access to. Once configured, Cashmere connects on a daily schedule, lists new files in your remote directory, downloads them, parses them, and adds them to your publisher library — no manual uploads required.

This guide walks you through the end-to-end setup. Expect to spend about 10 minutes.

Connecting an SFTP server is a function only available for Verified Publisher accounts.

If you do not see the SFTP button on the Add Content page, you do not have a Publisher account.

Prerequisites

You'll need:

  1. An SFTP server with files you want ingested.
  2. Connection details: hostname, port (usually 22), username, and password.
  3. The remote path (directory) on the server where files are stored.
  4. About 10 minutes.

Accepted file extensions currently include PDF, EPUB, HTML, XML, ZIP, MD, MARKDOWN, CSV, DOCX, JSON, OUTLOOK, PPTX, TXT, XLS, and XLSX.

Cashmere works with any standard SFTP server (OpenSSH, FileZilla Server, ProFTPD, etc.).

How it works

You provide connection credentials (hostname, port, username, password) and a remote path to Cashmere. When you save the configuration, Cashmere fetches the server's SSH host key, tests the connection, and stores that host key for future verification.

Each day, Cashmere connects to your SFTP server, lists files in the remote path (and subdirectories), downloads any new files, and ingests them. Files are tracked using markers — once successfully parsed, a file won't be redownloaded unless it changes on the server.

You can revoke access immediately by changing or revoking the credentials on your SFTP server.

Step 1. Get your connection details

You'll need:

  • Hostname (e.g. sftp.example.com or 192.168.1.100)
  • Port (usually 22 for SFTP; confirm with your admin)
  • Username (e.g. contentuser)
  • Password (the user's password on the SFTP server)
  • Remote path (e.g. /uploads or /home/contentuser/incoming) — the directory where your files are stored

Cashmere's current self-serve SFTP configuration uses username/password authentication. If your server only supports SSH key auth, contact your account representative before setting this up.

Step 2. Save the configuration in Cashmere

  1. In Cashmere, go to Add Content → SFTP.
  2. Fill in the form:
Field What to enter
Hostname e.g. sftp.example.com
Port Usually 22 (confirm with your admin)
Username Your SFTP account username
Password Your SFTP account password
Remote Path e.g. /uploads or /home/user/incoming
  1. Click Save Configuration.

If the save fails, Cashmere will show an error before the configuration is stored.

Step 3. Review the saved configuration

After the configuration saves successfully, the SFTP page shows:

  • The saved host, port, username, and remote path
  • The Host Fingerprint in SHA256 format
  • The last sync time and next scheduled sync time
  • A Test Connection button for checking the saved configuration

The Test Connection button performs a shallow check of the configured directory and returns a message like Connected — found N file(s) directly under '/uploads'. It does not recursively count files in subdirectories.

Typical errors:

  • Connection failed or Connection refused → wrong hostname or port
  • SSH error: Authentication failed → wrong username or password
  • Could not list '/path' → the user can connect but cannot access that directory

Step 4. Verify the host fingerprint

After the configuration is saved, Cashmere displays the server's host key fingerprint in SHA256 format, like:

SHA256:AbCd1234EfGhIjKlMnOpQrStUvWxYz5+6789abcdef0=

You should verify this matches your server's actual fingerprint. To find it:

On your SFTP server (if you have shell access):

ssh-keyscan YOUR_HOSTNAME 2>/dev/null | ssh-keygen -lf - -E sha256

Or ask your SFTP server admin for the host fingerprint.

Cashmere enforces the stored host key on future connections. If the displayed fingerprint does not match what you expect, contact your account representative before relying on the sync.

Verifying the sync

Cashmere runs the SFTP sync once per day. On the next scheduled run:

  • New files in your remote path (and subdirectories) will be downloaded and appear in your Cashmere publisher library.
  • The Last Synced timestamp on your SFTP configuration page updates.

To check what files Cashmere found:

  1. Go to Add Content → SFTP.
  2. Click Test Connection to verify that Cashmere can still connect and list files directly under the configured remote path.

Note that the scheduled sync walks subdirectories recursively, while Test Connection only reports files directly under the configured directory.

To trigger a sync immediately, contact your account representative.

Updating or disconnecting

  • To change the connection (different server, path, credentials), click Edit on the SFTP configuration page, update the form, and click Update Configuration. Cashmere validates the connection during save.
  • To rotate credentials, update the user's password on your SFTP server, then update it in Cashmere and test the saved configuration.
  • To disconnect immediately, revoke or change the credentials on your SFTP server.
  • There is currently no self-serve delete button for SFTP configurations in the UI. If you want the saved configuration removed or disabled in Cashmere, contact your account representative.

Security notes

  • Passwords are encrypted at rest in our database.
  • Host key verification prevents man-in-the-middle attacks — every sync verifies the server's host key matches the one Cashmere stored when the configuration was saved.
  • Read-only access — Cashmere only downloads files; it never uploads, modifies, or deletes files on your SFTP server.
  • Cashmere-provided servers (if your SFTP server is hosted by us) are read-only in the console and managed by our team.
  • SFTP connections use SSH, which provides encryption in transit.
  • File integrity — once a file is successfully parsed, it's marked as processed; if you re-upload an identical file, Cashmere skips it unless it's newer than the previous version.