WL-SCP-O-NATOR is a Visual Studio Code extension that allows you to upload and download files between your local machine and a remote server using SCP. This extension simplifies the process of managing files on remote servers directly from your code editor.
Is your remote server too old for VS Code's built-in remote development? This extension is the perfect solution!
- β Works with ANY SSH-enabled server - even ancient Linux distributions
- β No server-side requirements - just SSH access needed
- β OpenWrt compatibility - perfect for router/embedded development
- β Legacy protocol support - force SCP mode for older systems
- β Custom port support - works with non-standard SSH configurations
Stop struggling with outdated servers! Keep your modern VS Code workflow while working with legacy systems, embedded devices, and older Linux distributions that can't run VS Code Server.
We think its better to work from your local machine and push to the remote one - especially when the remote server can't support modern development tools!
- Windows : the putty package with plink
- Everyone else: Good to go.
- Multi-Selection Support: Upload/download multiple files and folders at once
- Directory Operations: Upload or download entire directories with recursive copying
- Project Operations: Upload or download the entire project with ignore patterns
- Smart File Handling: Automatically detects and processes mixed selections
- Configuration Wizard: Interactive setup via Command Palette (
SCP-O-Nator: Setup Configuration) - Connection Testing: Verify SSH connectivity (
SCP-O-Nator: Test Connection) - Error Recovery: Retry failed transfers with one click
- File Comparison: Compare local vs remote files with timestamps and sizes
- Directory Sync: Bidirectional synchronization (upload focus)
- Real-time Progress: Visual progress tracking in status bar
- Universal Compatibility: Works with ANY SSH-enabled server
- Custom Port Support: Configure non-standard SSH ports (other than 22)
- Legacy SCP Protocol: Force SCP protocol for older devices like OpenWrt
- No Server Requirements: Just SSH access needed - no server-side installations
- First Time Setup: Press
Ctrl+Shift+Pβ "SCP-O-Nator: Setup Configuration" - Test Connection: Press
Ctrl+Shift+Pβ "SCP-O-Nator: Test Connection" - Start Transferring: Right-click files/folders β "Upload Selected" or "Download Selected"
- Upload Selected:
Ctrl+SHIFT+S(saves and uploads current file or selection) - Download Selected:
Ctrl+D(downloads current file or selection)
- Install the Extension: Search for
SCP-O-NATORin the Visual Studio Code Extensions marketplace and install it. - Create a Configuration File: Create a
.scpconfig.jsonfile in the root of your workspace or the directory where your files are located.
Create a file named .scpconfig.json and add the following content:
{
"username": "your-username",
"host": "your-host",
"port": 22,
"remoteDirectory": "/path/to/remote/directory",
"usePuttyTools": true, // Only for Windows users
"puttyPath": "C:\\path\\to\\putty\\directory", // Only for Windows users
"privateKey": "C:\\path\\to\\private\\key", // Path to your private key file (either OpenSSH or PuTTY format)
"forceScpProtocol": false, // Set to true for compatibility with older devices like OpenWrt
"preserveAttributes": false, // Set to true to maintain original file dates during transfers
"ignore": [
"node_modules",
".git",
"*.log"
]
}To securely access your remote server without entering a password, set up SSH public key authentication. This extension supports both OpenSSH and PuTTY key formats.
-
Generate an SSH Key Pair:
Open a terminal and run:
ssh-keygen -t rsa -b 4096 -C "your-email@example.com"Follow the prompts to save the key pair, optionally adding a passphrase for security.
-
Copy the Public Key to the Remote Server:
ssh-copy-id username@host
This command adds your public key to the
~/.ssh/authorized_keysfile on the remote server.
-
Generate an SSH Key Pair with PuTTYgen:
- Open PuTTYgen.
- Select "Generate" and move the mouse to create randomness.
- Save the public key and the private key (
.ppkfile). You can also export the key to OpenSSH format if needed.
-
Copy the Public Key to the Remote Server:
- Open the saved public key file, copy its contents, and add it to the
~/.ssh/authorized_keysfile on your remote server. This can be done via an SSH connection or a control panel provided by your hosting provider.
- Open the saved public key file, copy its contents, and add it to the
-
Using PSCP and Plink with PuTTY:
- Ensure that the path to your PuTTY tools (
pscp.exeandplink.exe) is correctly set in theputtyPathfield of your.scpconfig.json. - Specify the path to your
.ppkprivate key file in theprivateKeyfield.
- Ensure that the path to your PuTTY tools (
To upload the currently open file in the editor to the remote server, press Ctrl+U. This will execute the upload command and transfer the file to the specified remote directory.
To download the corresponding remote file to your local directory, press Ctrl+D. This will execute the download command and retrieve the file from the specified remote directory.
- Upload Project: Use the extension to upload all files in the workspace, respecting the ignore patterns specified in the configuration.
- Download Project: Downloads updates for files that already exist locally; new files not present locally will not be downloaded.
username: Your SSH usernamehost: Remote server hostname or IP addressport: SSH port (default: 22)remoteDirectory: Base directory on the remote serverprivateKey: Path to your SSH private key file
usePuttyTools: Set totruefor Windows users with PuTTY toolsputtyPath: Path to PuTTY tools directory (Windows only)forceScpProtocol: Set totrueto force SCP protocol for older devicespreserveAttributes: Set totrueto maintain original file dates during transfersignore: Array of patterns to ignore during project transfers
- No active editor found: Make sure you have a file open in the editor before using the upload or download commands.
- Configuration file not found: Ensure that the
.scpconfig.jsonfile is in the root of your workspace or the directory where your files are located. - SSH authentication errors: Verify that your SSH credentials (username, private key) are correct and that the SSH server is accessible.
- SSH passphrase prompts on Mac: The extension now handles SSH passphrase prompts properly on macOS. If you still encounter issues, ensure your SSH key is added to the SSH agent with
ssh-add. - SFTP not found error: For older OpenWrt devices, set
"forceScpProtocol": truein your configuration. - Custom port not working: Ensure the
portfield is set correctly in your.scpconfig.jsonfile.
β If this extension helps you, please consider giving it a star! β
As a solo developer, your likes and reviews really help with visibility and motivate continued development. Every star counts and helps other developers discover this tool!
- π Like the extension in the VS Code marketplace
- β Star the repository on GitHub
- π Leave a review sharing how it helps your workflow
Special thanks to the following contributors who have helped improve this extension:
- Connection Improvements: Fixed compareLocalVsRemote portOptions for Plink & SSH connections
- File Attributes: Added preserveAttributes feature to maintain original file dates during transfers
Want to contribute? Check out the Contributing section below!
Contributions are welcome! If you encounter any issues or have feature requests, please open an issue or submit a pull request on the GitHub repository.
This project is licensed under the BSD 3 License. See the LICENSE file for details.
