A VS Code extension that works like the Remote Host tool window in JetBrains IDEs (IntelliJ IDEA, PhpStorm, WebStorm...). Connect to multiple servers over SFTP / FTP / FTPS, browse and edit files directly on the server, upload on save, diff local against remote, and open SSH terminals — without leaving VS Code and without syncing the whole project.

Reusable SSH configurations (user@host:port) are managed in their own
window and shared by any number of hosts — passwords go to the OS keychain,
never into JSON:

Features
Hosts
- Host manager UI — add, edit and delete hosts in a dedicated panel
(
Remote Host: Add / Edit Hosts...); hosts are listed in a sidebar grouped by scope, with unsaved-draft indicators, Test Connection and Save & Connect - Reusable SSH configurations — define
user@host:port+ auth once, reference it from any number of hosts; managed in their own window - Passwords stay out of JSON — passwords and key passphrases are stored in the OS keychain (VS Code SecretStorage); legacy plaintext configs migrate automatically on save
- Workspace and global scope — per-project hosts in
.vscode/remote-hosts.json, global hosts in~/.vsremote/hosts.json, available in every project - Default host auto-connects when the workspace opens; switch hosts via the status bar item or the ⇄ button in the tree
- Remote folder browser — pick
remotePathfrom a live folder tree instead of typing it
Files
-
Remote file tree in the activity bar — browse, open and edit files straight on the server; saving uploads back automatically (no temp files)
-
Upload / Download — files and folders, recursive, with multi-select; drag & drop from your file manager into the tree to upload
-
Upload on save — optionally push local edits on every save (
uploadOnSave) -
Compare with Remote / Compare with Local — one-click diff between the local and server copy of a file
-
New File / New Folder / Rename / Delete / Copy Remote Path from the context menu
-
File Transfer log — a panel showing every transfer with progress; long transfers can be cancelled:

Connection
- SFTP (password, private key or ssh-agent), FTP and FTPS (implicit TLS is picked automatically on port 990)
- SSH terminal in VS Code's integrated terminal,
cd'd intoremotePath - Auto-reconnect when a dropped connection is used again
- Multi-root workspaces — uploads pick the host whose
localPathcontains the file
Getting started
- Open the Remote Host icon in the activity bar.
- Click Add / Edit Hosts... and fill in the form:
- pick or create an SSH configuration (
user@host:port+ password or key) for SFTP, or enter host/username inline for FTP/FTPS, - choose the remote path (the Browse... button lets you pick it from the server),
- optionally tick Upload on save or Save globally.
- pick or create an SSH configuration (
- Hit Save & Connect — the server appears in the file tree.
Configuration files
Hosts live in .vscode/remote-hosts.json (this project) and
~/.vsremote/hosts.json (global). The host form maintains them for you —
hand-editing is possible but never required:
{
"defaultHost": "My Server",
"hosts": [
{
"name": "My Server",
"protocol": "sftp", // sftp | ftp | ftps
"sshConfig": "[email protected]:22", // reference to an SSH configuration
"remotePath": "/var/www/html",
"localPath": ".", // default: workspace root
"uploadOnSave": false,
},
],
}
SSH configurations are stored next to the hosts (ssh-configs.json), identified
by user@host:port. Passwords / passphrases are never written to these
files — they live in the OS keychain.
Usage
| Action | Where |
|---|---|
| Select / switch host | The ⇄ icon in the view title, the status bar Remote item, or Remote Host: Switch / Connect Host |
| Add / edit / delete hosts | Remote Host: Add / Edit Hosts... — or the ... menu in the view title |
| Manage SSH configurations | Remote Host: SSH Configurations... |
| Edit a file | Click it in the tree; saving uploads it back |
| SSH terminal | Terminal icon in the view title or Remote Host: Open SSH Terminal |
| New file/folder, rename, delete, download, copy path | Right-click file(s)/folder(s) in the tree |
| Upload | Right-click in the explorer/editor → Upload to Remote Host, or drop files onto the tree |
| Diff | Right-click a local file → Compare with Remote Host; a tree file → Compare with Local |
| Transfer log | Remote Host: Show File Transfer Log (panel area) |