FTP NativeFS
Modern FTP & SFTP virtual file system extension for Visual Studio Code. Work with remote files and folders directly in your VS Code workspace just like local files.
Features
- Native FileSystemProvider Integration: Seamlessly mounts remote directories into your VS Code workspace (
workspaceFolders).
- FTP & SFTP (SSH): Support for standard FTP, FTPS, and SFTP protocols.
- Secure Credential Storage: Passwords are automatically migrated from configuration files into VS Code's native Secret Storage (OS Keychain, Secret Service, or Credential Manager).
- Flexible Remote Paths: Configure custom root directories per server (
remotePath) or default to server home/root.
- Broad Algorithm Support: Out-of-the-box compatibility with modern and legacy SSH/SFTP servers (OpenSSH, ProFTPD/mod_sftp, Shoptet, cPanel, Wedos, etc.).
- Independent Connection Queues: Per-profile queuing prevents hanging connections from blocking operations on other servers.
Getting Started
1. Open Configuration
Press Ctrl+Shift+P (or Cmd+Shift+P on macOS) and run:
FTP: Open Configuration File
This opens your ftp-profiles.json configuration file.
Example configuration:
[
{
"name": "My SFTP Server",
"protocol": "sftp",
"host": "sftp.example.com",
"port": 22,
"user": "developer",
"password": "YOUR_PASSWORD_HERE",
"remotePath": "."
},
{
"name": "My Webhosting (FTP)",
"protocol": "ftp",
"host": "ftp.example.com",
"port": 21,
"user": "webuser",
"password": "YOUR_PASSWORD_HERE",
"remotePath": "/www",
"secure": false
}
]
Security Note: When you save ftp-profiles.json, the extension automatically stores your plaintext password into VS Code's encrypted Secret Storage and replaces it with ******** in the file. An id is also generated automatically if omitted.
Configuration Options
| Option |
Type |
Default |
Description |
id |
string |
(Auto-generated) |
Unique profile identifier. Optional, generated automatically if omitted. |
name |
string |
(Required) |
Display name in the QuickPick menu and workspace tree. |
protocol |
'ftp' \| 'sftp' |
(Required) |
Protocol to use. |
host |
string |
(Required) |
Remote host name or IP address. |
port |
number |
21 (FTP) / 22 (SFTP) |
Remote port number. |
user |
string |
(Required) |
Login username. |
password |
string |
Optional |
Login password. Replaced by ******** after saving. |
remotePath |
string |
. (SFTP) / / (FTP) |
Starting directory on remote server. |
privateKeyPath |
string |
Optional |
Absolute path to SSH private key file (SFTP only). |
secure |
boolean \| 'implicit' |
false |
TLS encryption mode for FTP (FTP only). |
3. Connect to a Server
Press Ctrl+Shift+P (or Cmd+Shift+P) and run:
FTP: Connect to Server...
Select your profile from the list. The remote folder will be mounted into your current VS Code workspace.
Commands
ftp-nativefs.createConnection — FTP: Add New Connection Wizard...: Step-by-step interactive wizard to add FTP, SFTP, or FTPS connections without manually editing JSON.
ftp-nativefs.addConnection — FTP: Connect to Server...: QuickPick menu to mount a configured server into workspace.
ftp-nativefs.openConfig — FTP: Open Configuration File: Opens the configuration JSON file.
License
MIT