Send files back through your SSH session.
# On any server you're SSH'd into:
sendback results.tar.gz
# → File appears in ~/Downloads on your laptopNo scp paths, no NAT issues, no firewall hassles.
On your laptop (macOS/Linux, system-wide):
curl -sSL https://raw.githubusercontent.com/yipihey/sendback/main/scripts/install.sh | bashThis installs to /usr/local/bin/sendback (requires sudo).
On servers (no sudo required):
curl -sSL https://raw.githubusercontent.com/yipihey/sendback/main/scripts/install.sh | bash -s -- --localThis installs to ~/.local/bin/sendback. Make sure ~/.local/bin is in your PATH:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrcRequires Rust (install with curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh).
cargo install sendbackWhere does it install?
- Binary goes to
~/.cargo/bin/sendback - No build files are left behind (cargo cleans up automatically)
- Make sure
~/.cargo/binis in your PATH (rustup adds this during installation)
To update later:
cargo install sendback --forcegit clone https://github.com/yipihey/sendback.git
cd sendback
cargo build --release
# Binary is at ./target/release/sendback
# Copy it wherever you want, or run: cargo install --path .Build artifacts: The target/ directory contains build files (~500MB).
You can delete it after copying the binary, or add it to .gitignore (already done).
sendback listen # Run in a terminal (keep it open), or:
sendback service install # Auto-start on login (background)ssh -R 19283:localhost:19283 yourserverPro tip: Add an alias to ~/.bashrc or ~/.zshrc:
alias sshr='ssh -R 19283:localhost:19283'Then just use sshr yourserver.
sendback file.tar.gz # Single file
sendback *.log # Multiple files
sendback check # Verify tunnel worksFiles appear in ~/Downloads on your laptop (configurable).
- Zstd compression — faster transfers over slow connections
- Resume support — interrupted transfers continue where they left off
- Transfer history —
sendback historyshows past transfers - Multi-hop friendly — works with jump hosts/bastions
- Secure — SSH-encrypted, localhost-only, checksum-verified
sendback check # Run on server — diagnose tunnel issues
sendback doctor # Run on laptop — health checkCommon issues:
- "Nothing listening" — Start
sendback listenon your laptop - "Connection refused" — Connect with
-R 19283:localhost:19283 - "Early EOF" — Version mismatch; update sendback on both machines
sendback config --show # View current config
sendback config --download-dir ~/Documents
sendback config --compression falseConfig file location: ~/.config/sendback/config.toml
LAPTOP SERVER
┌──────────────┐ ┌──────────────┐
│ sendback │ ◄──────────────── │ sendback │
│ (listen) │ SSH reverse │ file.tar.gz │
│ :19283 │ tunnel (-R) │ │
└──────────────┘ └──────────────┘
SSH's -R flag creates a reverse tunnel from server back to laptop.
sendback streams files through this encrypted tunnel.
If installed via cargo:
cargo uninstall sendbackIf installed via install script:
rm /usr/local/bin/sendback # system-wide install
# or
rm ~/.local/bin/sendback # local installConfig and data:
rm -rf ~/.config/sendback # config file
rm -rf ~/.local/share/sendback # transfer historyQuestions, bugs, or feature requests: sendback@tomabel.org
GitHub: https://github.com/yipihey/sendback
MIT