Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>SFTP-SSH-RemoteNew to Visual Studio Code? Get it now.
SFTP-SSH-Remote

SFTP-SSH-Remote

Diypa571

|
2 installs
| (0) | Free
Secure FTP, FTPS and SFTP/SSH remote file browser and editor for Visual Studio Code. Connect, browse, edit, upload and download remote files. Automatically synchronize local changes and upload modified files to the remote server whenever a document is saved.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

SFTP-SSH-Remote for Visual Studio Code

Secure FTP, FTPS and SFTP/SSH remote file browser and editor for Visual Studio Code. Connect, browse, edit, upload and download remote files. Automatically synchronize local changes and upload modified files to the remote server whenever a document is saved.

SFTP-SSH-Remote is created by Diyar Parwana (Diypa571) for working with remote files without downloading an entire project first. Opening a remote file places it in a native VS Code editor, and saving automatically synchronizes the modified contents with the server.

Author: Diyar Parwana (Diypa571) · GitHub: github.com/diypa571 · Version: 1.2.2

New to server setup? Jump to the manual FTP, FTPS, and SFTP/SSH connection guide included on this Marketplace page.

SFTP-SSH-Remote combines a modern visual connection form with VS Code's Remote Servers tree, virtual filesystem, Output panel, progress notifications, and encrypted extension storage.

Features

  • FTP, explicit FTPS, implicit FTPS, and SFTP/SSH
  • Encrypted server profiles protected by a security password
  • Saved credentials, password-per-session prompts, SSH agent, and private key authentication
  • Nested folders for organizing server profiles
  • Lazy remote folder browsing in the Activity Bar
  • Automatic remote synchronization and upload on save
  • New file and folder
  • Rename, duplicate, delete, copy, cut, paste, and cross-server copy/move
  • Recursive upload and download
  • Remote permissions/CHMOD
  • Drag local files into the remote tree to upload
  • Drag remote items between folders or servers to move them
  • Conflict prompts with overwrite, overwrite-all, skip, or cancel
  • Remote path copy and path reveal
  • Fuzzy remote file finder with reindexing and ignored-name patterns
  • Reconnect and connection testing
  • Direct Connect, Disconnect, and Edit icons with visible per-server connection status
  • Transfer and error log in the Output panel
  • Import FileZilla XML, Remote FTP .ftpconfig, and PhpStorm XML
  • Temporary servers from ftp://, ftps://, and sftp:// URIs
  • Sorting, filtering, auto-reveal, default transfer paths, notifications, and debug settings

Installation

On the VS Code Marketplace, select Install and allow Visual Studio Code to open the extension page.

For a manual VSIX installation:

  1. Open Visual Studio Code.
  2. Open the Extensions view.
  3. Choose the … menu and Install from VSIX….
  4. Select the generated sftp-ssh-remote-1.2.2.vsix file.
  5. Open the new SFTP-SSH-Remote icon in the Activity Bar.

Select the book icon in the Remote Servers panel header at any time to open the visual connection guide and launch the Add Server wizard.

For development, open this folder in VS Code, press F5, and use the Extension Development Host window.

First use

  1. Select Add FTP/SFTP Server in the Remote Servers view.
  2. On first use, the Protect your connections screen asks you to create and confirm a security password. This is not your FTP or SSH password; it encrypts the complete profile collection on this computer.
  3. Complete the visual connection form. Select SFTP, FTPS, or FTP, enter the server details, and choose Test connection before saving.
  4. Expand the server, browse to a file, and select it to edit.
  5. Save normally (Ctrl+S or Cmd+S). The save finishes only after the upload succeeds.

The security password cannot be recovered and is kept only for the current extension-host session. Use SFTP-SSH-Remote: Lock Connections to clear it and disconnect every server immediately.

On later sessions, selecting the SFTP-SSH-Remote Activity Bar icon opens a dedicated unlock dialog. Incorrect passwords are explained inside the dialog, and the server list appears only after the encrypted vault is unlocked.

For field-by-field instructions for every supported connection and authentication type, continue with the guide below.

Manual FTP, FTPS, and SFTP/SSH connection guide

This guide is included directly on the Marketplace page so it remains available without opening another website.

Before you begin

Collect these details from your hosting provider or server administrator:

  • hostname, such as ftp.example.com or server.example.com
  • port
  • username
  • password, SSH agent, or SSH private key
  • remote root, such as /public_html, /var/www/example.com, or /home/user/site
  • for FTPS: whether the server uses explicit or implicit TLS
Connection Typical port Encryption
FTP 21 None; credentials and files are exposed in transit
Explicit FTPS 21 FTP upgraded to TLS after connecting
Implicit FTPS 990 TLS starts immediately
SFTP/SSH 22 File transfer over SSH

Prefer SFTP or FTPS. Use plain FTP only when the server does not offer an encrypted alternative.

Open the connection wizard

  1. Open Visual Studio Code.
  2. Select the SFTP-SSH-Remote icon in the Activity Bar.
  3. Select the + button in Remote Servers, or run SFTP-SSH-Remote: Add Server from the Command Palette.
  4. On first use, create and confirm the security password on the Protect your connections screen, then select Create secure vault.

The security password encrypts the complete saved profile collection on this computer. It is not the FTP or SSH server password, is entered once per VS Code session, and cannot be recovered.

Plain FTP

  1. Choose Plain FTP.
  2. Enter a profile name.
  3. Enter only the hostname, such as ftp.example.com; do not include ftp://.
  4. Enter the provider's port, normally 21.
  5. Enter the FTP username.
  6. Choose Save password in encrypted profile or Prompt for password each session.
  7. Enter the remote root, commonly /public_html.
  8. Select Test connection, then Save connection.

Plain FTP is not encrypted. Anyone able to observe the network may be able to read the login and transferred files.

Explicit FTPS

  1. Choose Explicit FTPS.
  2. Enter the profile name and hostname.
  3. Use port 21 unless the provider specifies another port.
  4. Enter the username and choose saved-password or password-per-session authentication.
  5. Enter the remote root.
  6. Test and save the connection.

The extension validates the FTPS certificate using the operating system's trusted certificate authorities. If testing reports a certificate error, verify the hostname and ask the provider to repair or renew the certificate.

Implicit FTPS

  1. Choose Implicit FTPS.
  2. Enter the profile name and hostname.
  3. Use port 990 unless the provider specifies another port.
  4. Enter the username, authentication choice, and remote root.
  5. Test and save the connection.

If port 990 times out, confirm that the provider actually uses implicit FTPS. Many providers use explicit FTPS on port 21 or SFTP on port 22 instead.

SFTP with a password

  1. Choose SFTP (SSH).
  2. Enter a profile name and the SSH hostname without sftp://.
  3. Use port 22 unless the server uses a custom SSH port.
  4. Enter the SSH username.
  5. Choose Save password in encrypted profile or Prompt for password each session.
  6. Enter the remote root, such as /var/www/example.com or /home/deploy/site.
  7. Test and save the connection.

If authentication succeeds but listing fails, confirm that the account has SFTP access and permission to enter the configured remote root.

SFTP with an SSH private key

  1. Choose SFTP (SSH) and enter the profile name, hostname, port, and username.
  2. Choose Private key file.
  3. Select the private key, commonly ~/.ssh/id_ed25519, ~/.ssh/id_rsa, or a dedicated deployment key.
  4. Enter the key passphrase; leave it empty only if the key has no passphrase.
  5. Enter the remote root.
  6. Test and save the connection.

Never select the public .pub file as the private key. Keep private keys outside project folders and never commit them to Git. On macOS or Linux, private keys should normally be readable only by their owner:

chmod 600 ~/.ssh/id_ed25519

SFTP with an SSH agent

  1. Load the intended key into the operating system's SSH agent.
  2. Choose SFTP (SSH).
  3. Enter the profile name, hostname, port, username, and remote root.
  4. Choose SSH agent.
  5. Test and save the connection.

On macOS or Linux, confirm that an agent socket and key are available:

echo "$SSH_AUTH_SOCK"
ssh-add -l

If the terminal sees the agent but VS Code does not, launch VS Code from that terminal with code and test again. On Windows, the extension can use Pageant when available.

Choose the remote root

The remote root is the first directory displayed when the server is expanded. It does not download anything by itself.

  • shared hosting: /public_html
  • Plesk: /httpdocs or /var/www/vhosts/example.com/httpdocs
  • Linux web server: /var/www/example.com
  • home-directory deployment: /home/deploy/site
  • account root: /

If testing authenticates but reports No such file, File not found, or Permission denied, try / or the account home directory first. Find the correct folder, then edit the saved profile to use that path.

Verify the connection safely

  1. Use Test Connection from the server context menu.
  2. Expand the server and one directory.
  3. Open a small text file.
  4. Make a harmless change only when you have a backup or are using a test environment.
  5. Save and check Output → SFTP-SSH-Remote for the upload result.

Listing, downloading, and opening remote files do not alter the server. Saving, uploading, renaming, moving, deleting, changing permissions, and creating files or folders do alter it.

Common errors

Connection timed out

  • verify the hostname, port, VPN, firewall, and hosting allowlist
  • confirm whether the service is FTP, explicit FTPS, implicit FTPS, or SFTP

Authentication failed

  • re-enter the username and password
  • confirm that the SSH key belongs to the configured username
  • check whether the key needs a passphrase
  • verify that password authentication is permitted when using a password

FTPS certificate error

  • make sure the hostname matches the certificate name
  • check the computer date and time
  • ask the provider to repair an expired, self-signed, or incomplete certificate chain

Permission denied or saving fails

  • confirm the remote root and account permissions
  • check write permission on both the file and its parent directory
  • reconnect if the server closed an idle session
  • read the full response in Output → SFTP-SSH-Remote

SSH agent has no identities

Run ssh-add -l. If no key is listed, add the intended key with ssh-add /path/to/private-key, then reload VS Code.

Edit, connect, and disconnect

Use the pencil icon on a server row, or right-click and select Edit Connection. Changing a connection closes its current session; the next connection uses the updated settings.

  • Disconnect closes only the live FTP/SFTP session. It does not remove the encrypted profile or change remote files. Session-only passwords are cleared.
  • Connect opens a new session using the saved settings.
  • Reconnect closes and immediately establishes the session again.
  • SFTP-SSH-Remote: Lock Connections disconnects all sessions and removes the decrypted security password from extension memory.

Commands

Open the Command Palette and type SFTP-SSH-Remote to see all commands. Useful shortcuts include:

  • Ctrl+Space — show/focus SFTP-SSH-Remote
  • Ctrl+Alt+P — fuzzy remote file finder
  • F2 — rename the selected remote item
  • A — create a remote file while the Remote Servers tree is focused
  • Shift+A — create a remote folder
  • D — duplicate
  • Delete / Backspace — delete
  • Ctrl/Cmd+C, Ctrl/Cmd+X, Ctrl/Cmd+V — remote copy, cut, and paste

All operations are also available from right-click menus.

Temporary server URIs

Run SFTP-SSH-Remote: Add Temporary Server from URI and enter, for example:

sftp://username:password@example.com:22/var/www
ftp://username:password@example.com:21/public_html
ftps://username:password@example.com:990/public_html

Temporary profiles remain in memory until removed or VS Code closes. Choose Save Temporary Server to add one to the encrypted profile vault.

The extension also registers a VS Code URI handler. A URI directed to the extension can carry the FTP/SFTP URI in its path:

vscode://diyar-parwana.sftp-ssh-remote/sftp%3A%2f%2fuser%40example.com%2fvar%2fwww

Avoid including passwords in links or shell history; the interactive temporary-server command uses a masked input field.

Importing profiles

Use SFTP-SSH-Remote: Import Servers and select one or more:

  • FileZilla sitemanager.xml
  • Remote FTP .ftpconfig
  • PhpStorm deployment XML

FileZilla passwords encoded as base64 or plain text are imported into the encrypted vault. Passwords using FileZilla's system-specific crypt encoding cannot be decoded and are left empty with a warning.

Settings

Search Settings for SFTP-SSH-Remote to configure:

  • server and folder sorting
  • open-on-startup and preview-editor behavior
  • ignored names and finder search mode
  • auto-reveal of the active remote editor
  • drag-and-drop confirmation
  • default upload/download locations
  • successful upload and error notifications
  • connection timeout and directory-cache duration
  • debug protocol logging

Default transfer paths accept desktop, downloads, workspace, or an absolute filesystem path.

Security

The extension encrypts the entire saved profile document with AES-256-GCM and then stores that ciphertext inside VS Code SecretStorage for an additional platform-protected encryption layer. The key is derived from the security password with PBKDF2-SHA-256 and a random salt. Every save uses a new random IV and an authentication tag, so incorrect passwords or modified ciphertext are rejected.

Server passwords requested with Prompt for password each session remain only in memory. Temporary profiles also remain only in memory unless explicitly saved.

SFTP connections pin the server's SHA-256 host-key fingerprint after the user verifies and trusts it. A changed server identity is blocked. Existing saved secrets are not copied into webviews when editing a profile, logs are credential-redacted, and the extension contains no telemetry or developer-controlled network endpoint. Read the complete security and privacy policy.

Plain FTP does not encrypt credentials in transit. Prefer SFTP or FTPS whenever possible.

Development

npm install
npm run check
npm test
npm run test:vscode
npm run package

npm run test:vscode launches an isolated Extension Development Host and verifies activation plus command registration. The compiled extension entry point is dist/src/extension.js. The installable VSIX is created at the project root.

Project

Created and maintained by Diyar Parwana, publishing on GitHub as Diypa571.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft