Remote Deploy
VS Code extension to upload local workspace files to an SFTP remote host, following the Deployment/Remote Deploy workflow from PhpStorm.
Features
- Create SFTP profiles using Password, SSH key pair, or OpenSSH config + authentication agent.
- Edit an existing profile from the Command Palette or the right-click menu on a profile in the Remote Deploy sidebar.
- Store passwords using VS Code SecretStorage.
- Upload a file/folder from Explorer or the Command Palette.
- Upload the entire workspace.
- Remote Deploy sidebar structured as
Profile → Remote root → files/folders, always sorting folders before files.
- Double-click a remote file to open it directly in the editor;
Ctrl+S writes the file back to the remote host.
- Compare a remote file with the local one using the VS Code Diff Viewer.
- Upload a local file directly into a selected remote directory via
Upload Here.
- Create directories, rename, and delete remote files/folders (with confirmation before deletion).
- Upload on save: off, explicit save only, or always upload.
- Local/remote mapping, exclude globs, and temporary upload + rename.
- OpenSSH aliases use the native
sftp binary, so they inherit ~/.ssh/config, ssh-agent, ProxyJump, and known_hosts.
Running the extension for development
npm install
npm run compile
npm test
npm run package
Open the remote-deploy folder in VS Code and press F5. In the Extension Development Host, run Remote Deploy: Add Profile from the Command Palette.
Sample configuration
{
"remoteDeploy.profiles": [
{
"name": "staging",
"protocol": "sftp",
"host": "staging.example.com",
"port": 22,
"username": "deploy",
"authentication": { "type": "keyPair", "privateKeyPath": "~/.ssh/id_ed25519" },
"localRoot": "${workspaceFolder}",
"remoteRoot": "/var/www/app",
"uploadOnSave": "explicitSave",
"useTemporaryFile": true,
"exclude": ["**/.git/**", "**/node_modules/**"]
}
],
"remoteDeploy.defaultProfile": "staging"
}
With OpenSSH config, use authentication: { "type": "openSshConfig", "host": "my-staging" }. Host, key, agent, and jump host details are read from ~/.ssh/config.
Design documentation and the roadmap are kept in project-overview.md in the source repository.