uses: eiserv/easySFTP@v2

./dist/ => /var/www/html/

Fast, secure and simple SFTP uploads for GitHub Actions. Deploy your build output to any SFTP server, from a three-line workflow step up to fully configured multi-target deployments.

deploy.yml
- name: Deploy via SFTP
  uses: eiserv/easySFTP@v2
  with:
    server: sftp.example.com
    username: ${{ secrets.SFTP_USERNAME }}
    password: ${{ secrets.SFTP_PASSWORD }}
    uploads: ./dist/ => /var/www/html/

features

  • fast

    Release tags run a prebuilt, checksum-verified Go binary; files transfer in parallel with concurrent SFTP write requests per file. No Docker, no runtime to install.

  • secure

    Pin the server's host key so a man-in-the-middle fails the deploy. Atomic per-file uploads never leave half-written files, and credentials are only ever read from environment variables.

  • simple, but configurable

    Sensible defaults for the simple case. Gitignore-style excludes, sync and clean strategies, delete guards, dry runs, retries and structured outputs for the complex ones.

  • cross-platform

    Native amd64 and arm64 binaries for Linux, macOS and Windows runners. The same workflow step works everywhere.

strategies

strategyuploadsdeletesuse for
overlay all files nothing adding and updating files, leaving everything else in place
sync new & changed files files a previous sync uploaded that are now gone locally keeping a directory an exact mirror of your build, safely
clean all files everything in the remote target first a guaranteed-fresh deploy

sync is manifest-based: it only ever deletes files it uploaded itself and skips unchanged files by content hash. Destructive strategies are protected by delete guards, and anything can be previewed with dry-run: true.