No description
Find a file
Sebastian Vogt 072edadd32 Add encrypted password auth via SSH.NET with TOFU host key pinning
Replace external scp/ssh process calls with in-process SSH.NET transport so
password authentication works (OpenSSH cannot take passwords non-interactively).

- Store passwords encrypted at rest with DPAPI (CurrentUser scope)
- Add password field to bookmark dialog; uploads via SFTP with progress
- Pin host key fingerprint per bookmark (TOFU), since SSH.NET does not read
  known_hosts; reject on mismatch, persist on first successful connect

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 18:51:12 +02:00
Models Add encrypted password auth via SSH.NET with TOFU host key pinning 2026-06-04 18:51:12 +02:00
Services Add encrypted password auth via SSH.NET with TOFU host key pinning 2026-06-04 18:51:12 +02:00
.gitignore Initial commit: SCP Drop Zone WPF application 2026-06-04 18:13:51 +02:00
App.xaml Initial commit: SCP Drop Zone WPF application 2026-06-04 18:13:51 +02:00
App.xaml.cs Initial commit: SCP Drop Zone WPF application 2026-06-04 18:13:51 +02:00
BookmarkDialog.xaml Add encrypted password auth via SSH.NET with TOFU host key pinning 2026-06-04 18:51:12 +02:00
BookmarkDialog.xaml.cs Add encrypted password auth via SSH.NET with TOFU host key pinning 2026-06-04 18:51:12 +02:00
MainWindow.xaml Initial commit: SCP Drop Zone WPF application 2026-06-04 18:13:51 +02:00
MainWindow.xaml.cs Add encrypted password auth via SSH.NET with TOFU host key pinning 2026-06-04 18:51:12 +02:00
README.md Add README with feature overview and usage guide 2026-06-04 18:17:07 +02:00
RemoteBrowseDialog.xaml Initial commit: SCP Drop Zone WPF application 2026-06-04 18:13:51 +02:00
RemoteBrowseDialog.xaml.cs Initial commit: SCP Drop Zone WPF application 2026-06-04 18:13:51 +02:00
ScpDropZone.csproj Add encrypted password auth via SSH.NET with TOFU host key pinning 2026-06-04 18:51:12 +02:00
SshImportDialog.xaml Initial commit: SCP Drop Zone WPF application 2026-06-04 18:13:51 +02:00
SshImportDialog.xaml.cs Initial commit: SCP Drop Zone WPF application 2026-06-04 18:13:51 +02:00

SCP Drop Zone

A Windows tray app for fast, drag-and-drop file transfers to remote SSH servers. Keep it pinned on screen, drop files in, done.

Platform .NET


What it does

SCP Drop Zone gives you a small always-on-top window where you can:

  • Drag & drop files to send them to a remote server via SCP
  • Paste files or images from clipboard (Ctrl+V or global hotkey)
  • Manage bookmarks for all your frequently-used SSH destinations
  • Set a default server and trigger a quick-send with a global hotkey — without even opening the window

It wraps OpenSSH's scp and ssh binaries, so no extra server setup is needed — if you can scp from the terminal, this works.


Features

File Transfer

  • Drag & drop any number of files onto the window
  • Paste files directly from clipboard with Ctrl+V
  • Capture clipboard images (auto-saved as .png) or text (auto-saved as .txt)
  • Progress display with percentage per transfer
  • Small files (< 256 KB) are batched together for efficiency
  • Temp files are cleaned up automatically after transfer

Bookmarks

  • Store multiple SSH destinations, each with: Name, Host, User, Port, Remote path, SSH key
  • Test connection before saving a bookmark
  • Remote path browser — navigate the remote filesystem and pick a target directory
  • Import from ~/.ssh/config — select which hosts to pull in automatically
  • Star one bookmark as the default for hotkey use
  • Duplicate, edit, or delete bookmarks at any time

Global Hotkey

  • Default: Win+Shift+V
  • Takes whatever is on your clipboard and sends it to the default bookmark immediately
  • Fully customizable — click the hotkey display in the app to rebind it
  • Registers at the OS level, works regardless of which window is focused

System Integration

  • Lives in the tray — minimize to tray, restore with a double-click
  • Start with Windows — launches minimized on boot
  • Follows the Windows light/dark theme automatically
  • Balloon notifications for transfer success/failure

Requirements

  • Windows 10 or 11
  • .NET 8.0 Runtime
  • OpenSSH installed (ssh.exe and scp.exe must be on your PATH)
    • Windows ships with OpenSSH since version 1803 — check via where ssh in a terminal

Building from source

dotnet build -c Release

Output lands in bin\Release\net8.0-windows\.

To publish a self-contained single-file executable:

dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true

Usage

First run

  1. Launch ScpDropZone.exe
  2. Click + to add a bookmark for your first server
  3. Fill in host, user, port (default 22), remote path, and optionally an SSH key
  4. Click Test to verify the connection, then Save

Sending files

  • Drag & drop: Drop files onto the window, select the destination, click SEND
  • File picker: Click Browse to select files manually
  • Clipboard paste: Copy files in Explorer, then Ctrl+V into the app
  • Hotkey: Copy files → press Win+Shift+V → sent to default bookmark, no click needed

Browsing remote paths

Inside the bookmark dialog, click the folder icon next to the remote path field to open a live directory browser. It connects to the server and lets you navigate and select the target directory.

Importing SSH hosts

Click the import button in the bookmark list to read your ~/.ssh/config. Pick which hosts to import — fields like Hostname, User, Port, and IdentityFile are parsed automatically.


Configuration

Config is stored at %AppData%\ScpDropZone\config.json with user-only file permissions. No manual editing needed — everything is managed through the UI.

Temporary clipboard files are written to %AppData%\ScpDropZone\tmp\ and cleaned up automatically (files older than 1 hour are removed on startup).


License

MIT