A focused SFTP, FTPS and FTP remote-file client for Visual Studio Code. It lets you download a project, create or edit local files and upload them, and delete files or folders locally and remotely without leaving the editor.
| Protocol | Security | Typical port | Configuration value |
|---|---|---|---|
| SFTP | Encrypted through SSH | 22 | "sftp" |
| FTPS explicit | FTP encrypted with TLS | 21 | "ftps" |
| FTPS implicit | FTP encrypted with TLS from connection start | 990 | "ftps" |
| FTP | Unencrypted | 21 | "ftp" |
SFTP and FTPS are different protocols. SFTP uses SSH; FTPS uses FTP over TLS.
For "ftps", port 21 (and other non-990 ports) uses explicit TLS. Port 990 uses implicit TLS.
- Create a connection configuration inside the current workspace.
- Choose SFTP, FTPS or FTP in the JSON configuration.
- Authenticate with a username and password.
- Download a complete remote project recursively.
- Upload a file manually from the Explorer, editor or Command Palette.
- Save and upload with
Ctrl+SorCmd+S. - Delete a selected file or folder locally and remotely after confirmation.
- Ignore configured files and directories.
- Reuse the same healthy connection instead of performing a new handshake for every file.
- Keep a connection alive for up to 24 hours while the VS Code extension host remains running.
- Display transfer progress and connection activity in Visual Studio Code.
Install Simple SFTP/FTP from the Visual Studio Code Marketplace.
Then open the local folder where you want to download or manage a remote project:
File → Open Folder
Open the Visual Studio Code Command Palette:
Ctrl + Shift + P
Run:
Simple SFTP/FTP: Config Connection
The extension creates and opens:
.vscode/sftp-config.json
The generated configuration is:
{
"protocol": "sftp",
"host": "suzdalenko.com",
"port": 22,
"username": "username",
"password": "password",
"remotePath": "/",
"localPath": ".",
"uploadOnSave": true,
"ignore": [
".git",
"node_modules",
".vscode"
]
}The bundled JSON schema provides validation, descriptions and autocomplete for the three protocol values while this file is open.
Change protocol to the connection type provided by your hosting company:
"protocol": "sftp"or:
"protocol": "ftps"or:
"protocol": "ftp"Use the correct port supplied by the hosting provider. The usual combinations are:
SFTP → 22
FTPS → 21 for explicit TLS or 990 for implicit TLS
FTP → 21
Configuration properties:
protocol:sftp,ftpsorftp. If omitted in an older configuration, it defaults tosftp.host: server hostname or IP address.port: server port between 1 and 65535.username: connection username.password: connection password.remotePath: remote project directory.localPath: local directory relative to the open workspace.uploadOnSave: whentrue, each manualCtrl+SorCmd+Suploads the active file.ignore: files and directories excluded from uploads and downloads.
The first transfer opens and authenticates a connection for that workspace. Later uploads, downloads and deletes reuse the same connection when it is still healthy.
Before reuse, the extension performs a lightweight connection check. It does not repeat the SSH or TLS handshake and login for every file.
The extension also:
- enables SSH keep-alive packets for SFTP;
- sends periodic
NOOPkeep-alive commands for FTP and FTPS; - reconnects automatically before the next operation if the server closed the connection;
- closes and renews a connection after a maximum lifetime of 24 hours;
- closes active connections when the VS Code extension host stops.
A hosting provider can enforce a shorter timeout. In that case the next operation reconnects automatically. A connection cannot survive closing VS Code, reloading the window, losing the network or restarting the computer.
Changing protocol, host, port, username or password also replaces the cached connection.
Run:
Simple SFTP/FTP: Download Project
The extension downloads files recursively from remotePath into localPath using the selected SFTP, FTPS or FTP connection.
Existing local files with the same path are updated. Local-only files are not deleted.
When this option is enabled:
"uploadOnSave": truepress:
Ctrl + S
or on macOS:
Cmd + S
Every shortcut press creates one queued upload, including when the document is already saved. VS Code Auto Save does not trigger a remote upload continuously while you type. The active reusable connection is shared by the queued uploads, so each save does not perform a new handshake.
You can upload an individual file in any of these ways:
- Right-click the file in the VS Code Explorer.
- Right-click inside the open editor.
- Open the Command Palette with
Ctrl+Shift+P.
Select:
Simple SFTP/FTP: Upload File
The extension creates missing remote directories before uploading. This means you can create a new local file inside localPath and upload it to the equivalent path below remotePath.
Right-click a local file or folder inside localPath, open the Simple SFTP/FTP submenu and select Delete.
After confirmation, the extension first deletes the remote item. Only after the remote deletion succeeds does it move the local item to the operating-system Recycle Bin.
Simple SFTP/FTP: Config Connection
Simple SFTP/FTP: Download Project
Simple SFTP/FTP: Upload File
Simple SFTP/FTP: Save and Upload File
Simple SFTP/FTP: Delete
SFTP and FTPS encrypt credentials and file contents. Plain FTP does not. Use "ftp" only when a legacy hosting provider offers no secure option.
The password is currently stored as plain text inside:
.vscode/sftp-config.json
Do not commit this file to Git, publish it in a repository or share it with other users. The generated ignore configuration excludes the complete .vscode directory from transfers, but you should also add the configuration file to your repository's .gitignore.
FTPS uses normal TLS certificate validation. The server certificate must be trusted and valid for the configured hostname.
After pulling a version that changes package.json or package-lock.json, close the Extension Development Host and install the updated dependencies in the extension source folder:
npm installThen press F5 again. A stale development installation can otherwise report command 'simple-sftp-suzdalenko.configConnection' not found because the extension host cannot load a newly added protocol dependency. This does not apply to an installed VSIX because the production dependencies are included in the package.
Install dependencies:
npm installRun lint and tests:
npm run lint
npm testRun the complete VS Code integration suite when a compatible test host is available:
npm run test:vscodeCreate a VSIX package:
npx @vscode/vsce packageMIT License