Simple SCP
A lightweight VS Code extension for uploading and downloading files to/from remote hosts via SCP with cross-device host configuration synchronization.
Support This Project
If you find this extension helpful, consider buying me a coffee!
Features
Core Functionality
- Quick File Upload/Download: Upload or download files directly from Explorer, Editor, or Sidebar with intelligent host selection
- Dual Download Modes:
- Download from Sidebar with custom save location
- Download from Explorer directly to selected folder
- Smart Host Selection: Recently used hosts (upload or download) appear first for quick access
- Host Management: Organize and manage remote hosts in TreeView interface with groups and color coding
- Cross-Device Sync: Host configurations automatically sync across devices via VS Code Settings Sync
- SSH Config Import: Import existing configurations from ~/.ssh/config with group selection
- Enhanced File Browser:
- Smart path navigation with input box
- Alphabetical sorting (directories first, then files)
- Quick upload/download buttons on each item
- Dot files visibility toggle (configurable via settings)
- Parent directory navigation with ".."
- File size display for easy reference
Authentication
- Multiple Methods: Support for Password, Private Key, and SSH Agent authentication
- Secure Storage: Authentication credentials stored locally (not synced) for security
- Passwordless Setup: Automatically configure SSH key-based authentication
- Visual Indicators: Clear status icons showing which hosts have authentication configured
- Windows SSH Agent: Native support for Windows OpenSSH Agent via named pipes
User Experience
- Smart Commands: Only essential commands shown in Command Palette
- Progress Tracking: Real-time indicators for uploads and long-running operations
- Color Coding: Assign colors to hosts for easy visual identification
- Connection Testing: Test SSH connections before uploading files
- Copy SSH Command: Quickly copy connection commands to clipboard
- Output Logs: Dedicated log viewer for troubleshooting
- Compatible with Windows, macOS, and Linux
- Cross-platform SSH Agent integration
- Works with standard OpenSSH configurations
Getting Started
Add a New Host
- Open the Simple SCP panel in the Activity Bar
- Click the "+" icon in the toolbar
- Follow the prompts to enter:
- Host name (display name)
- Hostname or IP address
- Port (default: 22)
- Username
- Default remote path
- Optional: Group and color
Import from SSH Config
- Click the cloud download icon in the toolbar
- Select hosts to import from your ~/.ssh/config
- Choose a group or create a new one
- Imported hosts will appear in the TreeView
Option 1: Configure Manually
- Right-click a host in the TreeView
- Select "Configure Authentication"
- Choose authentication method:
- Password
- Private Key (with optional passphrase)
- SSH Agent
Option 2: Setup Passwordless Login
- Right-click a host
- Select "Setup Passwordless Login"
- Enter your password when prompted
- The extension will automatically copy your SSH public key to the remote host
Upload Files
From Explorer or Editor:
- Right-click any file or folder in Explorer or right-click in the editor
- Select "Upload to Remote Host"
- Choose the destination host (recently used hosts appear first)
- Browse and select the remote directory
- Use upload buttons on directory items for quick upload
Smart Host Selection:
- Hosts you've recently uploaded to or downloaded from appear at the top
- Easy to reuse the same hosts for common workflows
- Authentication status clearly indicated for each host
Download Files
Method 1: Download from Sidebar (Custom Location)
- Right-click a host in the TreeView
- Select "Download from Remote Host"
- Browse remote directories with smart path navigation
- Click download buttons on files/directories for quick download
- Toggle dot files visibility as needed
- Choose where to save the downloaded files
Method 2: Download to Current Folder (Quick Download)
- Right-click any file or folder in Explorer
- Select "Download from Remote Host to Here"
- Choose the source host (recently used hosts appear first)
- Browse and select remote files/folders
- Files download directly to the selected local folder
Both methods support:
- Downloading individual files or entire directories
- Smart path navigation with input box
- Recently used hosts for quick access
- Real-time progress tracking
Edit Host Configuration
- Right-click a host in the TreeView
- Select "Edit Host"
- Update hostname, port, or other settings
Test Connection
- Right-click a host
- Select "Test Connection"
- View the result in a notification
Requirements
- VS Code 1.108.0 or higher
- SSH access to remote hosts
- For passwordless setup: SSH key pair (~/.ssh/id_rsa or similar)
Command Palette
The following commands are available in the Command Palette (Ctrl/Cmd+Shift+P):
- Simple SCP: Add Host - Add a new remote host
- Simple SCP: Add Group - Create a host group
- Simple SCP: Import from SSH Config - Import from ~/.ssh/config
- Simple SCP: Show Output Logs - Open the log viewer
Additional commands are available via context menus in the TreeView and file explorers.
Settings
simpleScp.showDotFiles
- Type: boolean
- Default: true
- Description: Show hidden files and directories (starting with dot) in remote file browser
You can change this setting in VS Code Settings (Ctrl/Cmd+,) to control the default behavior. The setting can also be temporarily toggled using the eye icon button in the file browser.
Security Notes
- Host configurations (names, addresses, ports, groups) are synced across devices via VS Code Settings Sync
- Authentication credentials (passwords, private keys, passphrases) are stored locally only using VS Code's SecretStorage
- Credentials are never synced across devices for security
- Each device requires separate authentication configuration
- Sync is handled automatically by VS Code when Settings Sync is enabled
Known Limitations
- Folder upload uploads files individually (not as archive)
- Symbolic links are followed during upload
- File permissions are preserved when possible
Troubleshooting
Connection Issues:
- Use "Test Connection" to verify credentials
- Check "Simple SCP: Show Output Logs" for detailed error messages
- Verify SSH access works from terminal:
ssh user@host -p port
Windows SSH Agent:
- Ensure OpenSSH Authentication Agent service is running
- Start service:
Start-Service ssh-agent in PowerShell (Administrator)
Import Issues:
- Verify ~/.ssh/config file exists and is readable
- Check config file syntax is valid
Release Notes
See CHANGELOG.md for detailed release notes.
Development
# Install dependencies
npm install
# Compile
npm run compile
# Watch mode
npm run watch
# Package extension
npm run package
# Publish to marketplace
npm run publish
License
See LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
Links