- C# 100%
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> |
||
|---|---|---|
| Models | ||
| Services | ||
| .gitignore | ||
| App.xaml | ||
| App.xaml.cs | ||
| BookmarkDialog.xaml | ||
| BookmarkDialog.xaml.cs | ||
| MainWindow.xaml | ||
| MainWindow.xaml.cs | ||
| README.md | ||
| RemoteBrowseDialog.xaml | ||
| RemoteBrowseDialog.xaml.cs | ||
| ScpDropZone.csproj | ||
| SshImportDialog.xaml | ||
| SshImportDialog.xaml.cs | ||
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.
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.exeandscp.exemust be on your PATH)- Windows ships with OpenSSH since version 1803 — check via
where sshin a terminal
- Windows ships with OpenSSH since version 1803 — check via
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
- Launch
ScpDropZone.exe - Click + to add a bookmark for your first server
- Fill in host, user, port (default 22), remote path, and optionally an SSH key
- 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