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.
- 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
| strategy | uploads | deletes | use 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.
docs
- configuration every input, output, mapping and ignore rule, plus the YAML config file
- strategies overlay, sync and clean in depth; manifest semantics and delete guards
- examples copy-paste recipes: key auth, multi-target deploys, PR previews, .sftpignore
- security host key pinning, credentials, least privilege, supply chain
- troubleshooting common errors and how to fix them
- migrating to v2 one breaking change; here is how to handle it