🌐 English | Español
XBIE-SFTP
Secure SFTP for VS Code with multiple sessions, per-file upload-on-save, a remote explorer, and a control center. Built for workflows where you only want to upload what you edit — not the whole project.
- Upload only changed files (Ctrl+S)
- Multiple simultaneous SFTP profiles (same or different servers)
- Remote Explorer: list · open to temp & upload on save · download (file/folder) · delete
- Control Center: connection state + quick actions
- Status bar indicator (uploading / queued / ready)
- Output logs (View → Output → “XBIE-SFTP”)
- Passwords in VS Code Secret Storage (no creds copied to server)
- SSH Agent and private-key support
English
🚀 Quick Start
- Install the extension: bintelcom.xbie-sftp.
- Open your project folder (workspace) in VS Code.
- Open the XBIE-SFTP icon in the Activity Bar → run “XBIE-SFTP: Add Connection” and fill in:
- Host:
sftp.example.com
- User:
deploy
- Port:
22
- Absolute remote path:
/home/deploy/app/
- (Optional) uploadOnSave: enable to upload on save from your mapped folder.
- Connect from the Control Center (Connect Profile) or run XBIE-SFTP: Connect.
- Open a file from your workspace. Ctrl+S uploads only that file.
🧩 Configuration (two sessions)
Define profiles using the wizard or in your User/Workspace settings.
JSONC (documented):
{
"xbieSftp.profiles": [
{
"name": "app_modules",
"host": "sftp.example.com",
"port": 22,
"username": "deploy",
"remotePath": "/home/deploy/app/modules", // absolute path on server
"useSshAgent": false, // true if you use SSH Agent
"uploadOnSave": true, // upload on save in mapped folder
"workspaceFolder": "modules", // local workspace folder mapped to remotePath
"ignore": ["**/.git/**","**/.vscode/**","**/node_modules/**","cache/**","templates_c/**"],
"concurrency": 4,
"retries": 2,
"timeoutMs": 20000
},
{
"name": "app_includes",
"host": "sftp2.example.net",
"port": 22,
"username": "deploy",
"remotePath": "/var/www/app/includes",
"useSshAgent": false,
"uploadOnSave": true,
"workspaceFolder": "includes",
"ignore": ["**/.git/**","**/.vscode/**","**/node_modules/**","cache/**","templates_c/**"]
}
]
}
Pure JSON (copy/paste):
{
"xbieSftp.profiles": [
{
"name": "app_modules",
"host": "sftp.example.com",
"port": 22,
"username": "deploy",
"remotePath": "/home/deploy/app/modules",
"useSshAgent": false,
"uploadOnSave": true,
"workspaceFolder": "modules",
"ignore": ["**/.git/**","**/.vscode/**","**/node_modules/**","cache/**","templates_c/**"],
"concurrency": 4,
"retries": 2,
"timeoutMs": 20000
},
{
"name": "app_includes",
"host": "sftp2.example.net",
"port": 22,
"username": "deploy",
"remotePath": "/var/www/app/includes",
"useSshAgent": false,
"uploadOnSave": true,
"workspaceFolder": "includes",
"ignore": ["**/.git/**","**/.vscode/**","**/node_modules/**","cache/**","templates_c/**"]
}
]
}
Important
remotePath
must be absolute and exist (/home/...
, /var/...
, etc.).
workspaceFolder
is the local VS Code folder name mapped to remotePath
. If omitted, the first opened folder is used.
🖥️ UI Overview
- Activity Bar → “XBIE-SFTP”
- Control Center: see profiles & state (connect, reconnect, disconnect, sync).
- Explorer: browse remote; right-click to open/download/delete.
- Status Bar: ✓ ready · ↑ queued · ⟳ uploading.
- Output: choose XBIE-SFTP to see logs (toggle verbose).
🛠️ Core Commands
- Add/Manage: Add Connection · Connect / Connect Profile / Connect All Workspace Profiles · Reconnect Profile · Disconnect Profile
- Per-file & Deploy: Upload Current File · Sync Profile (Deploy Workspace)
- Remote Explorer: Open Remote File (upload on save) · Download Item / Download Folder · Delete Remote Item
- Secrets & Logs: Set Password · Clear Stored Secrets · Reset Secrets & Connect · Show Output · Toggle Verbose Logging
⚙️ Profile Fields
name
, host
, port
, username
, remotePath
, privateKeyPath?
, useSshAgent?
, uploadOnSave?
, workspaceFolder?
, ignore[]
, concurrency
, retries
, timeoutMs
, fingerprint?
(SHA256:xxxxx...
).
🔐 Security
- Passwords live in VS Code Secret Storage (not plain files).
- No client configs or credentials are copied to the server.
- With
fingerprint
, host identity must match or the connection is refused.
- Recommended: SSH keys +
useSshAgent: true
.
🧭 Common Workflows
- Edit locally & upload on save → enable
uploadOnSave
. Editing inside the mapped folder → Ctrl+S uploads only that file.
- Open from remote, edit, and upload → Remote Explorer → Open Remote File (upload on save). Opens a temp copy; on save, uploads back.
- Manual deploy (partial/full) → Sync Profile (Deploy Workspace) walks your local folder and uploads what’s not ignored.
- Download / Delete → Right-click in Remote Explorer → Download / Delete.
💡 Tips
If you see no listing, check absolute remotePath
and server permissions. Use ignore
for performance. Edit within your workspace to trigger upload-on-save. Enable verbose logs if needed.
Español
SFTP seguro para VS Code con múltiples sesiones, upload-on-save por fichero, explorador remoto y centro de control. Pensado para subir solo lo que editas, no el proyecto completo.
🚀 Inicio rápido
- Instala la extensión: bintelcom.xbie-sftp.
- Abre tu carpeta de trabajo (workspace) en VS Code.
- Abre el icono de XBIE-SFTP → “XBIE-SFTP: Add Connection” y completa:
- Host:
sftp.ejemplo.com
- Usuario:
deploy
- Puerto:
22
- Ruta remota absoluta:
/home/deploy/app/
- (Opcional) uploadOnSave para subir al guardar.
- Conecta desde el Centro de control (Connect Profile) o ejecuta XBIE-SFTP: Connect.
- Abre un archivo de tu workspace. Al guardar (Ctrl+S), se sube solo ese fichero.
🧩 Configuración (dos sesiones)
JSONC (documentado):
{
"xbieSftp.profiles": [
{
"name": "app_modules",
"host": "sftp.ejemplo.com",
"port": 22,
"username": "deploy",
"remotePath": "/home/deploy/app/modules",
"useSshAgent": false,
"uploadOnSave": true,
"workspaceFolder": "modules",
"ignore": ["**/.git/**","**/.vscode/**","**/node_modules/**","cache/**","templates_c/**"],
"concurrency": 4,
"retries": 2,
"timeoutMs": 20000
},
{
"name": "app_includes",
"host": "sftp2.example.net",
"port": 22,
"username": "deploy",
"remotePath": "/var/www/app/includes",
"useSshAgent": false,
"uploadOnSave": true,
"workspaceFolder": "includes",
"ignore": ["**/.git/**","**/.vscode/**","**/node_modules/**","cache/**","templates_c/**"]
}
]
}
JSON estricto (copiar/pegar):
{
"xbieSftp.profiles": [
{
"name": "app_modules",
"host": "sftp.ejemplo.com",
"port": 22,
"username": "deploy",
"remotePath": "/home/deploy/app/modules",
"useSshAgent": false,
"uploadOnSave": true,
"workspaceFolder": "modules",
"ignore": ["**/.git/**","**/.vscode/**","**/node_modules/**","cache/**","templates_c/**"],
"concurrency": 4,
"retries": 2,
"timeoutMs": 20000
},
{
"name": "app_includes",
"host": "sftp2.example.net",
"port": 22,
"username": "deploy",
"remotePath": "/var/www/app/includes",
"useSshAgent": false,
"uploadOnSave": true,
"workspaceFolder": "includes",
"ignore": ["**/.git/**","**/.vscode/**","**/node_modules/**","cache/**","templates_c/**"]
}
]
}
Importante
remotePath
debe ser absoluta y existir (/home/...
, /var/...
).
workspaceFolder
es el nombre de la carpeta local mapeada a remotePath
. Si lo omites, se usa la primera carpeta abierta.
🖥️ Interfaz
- Barra de actividad → “XBIE-SFTP”
- Centro de control: ver perfiles y estado (conectar, reconectar, desconectar, sync).
- Explorador remoto: navegar; clic derecho para abrir/descargar/eliminar.
- Barra de estado: ✓ listo · ↑ en cola · ⟳ subiendo.
- Salida: elige XBIE-SFTP para ver logs (activa/desactiva verbosidad).
🛠️ Comandos
Add Connection · Connect / Connect Profile / Connect All Workspace Profiles · Reconnect Profile · Disconnect Profile · Upload Current File · Sync Profile (Deploy Workspace) · Open Remote File (upload on save) · Download Item · Download Folder · Delete Remote Item · Set Password · Clear Stored Secrets · Reset Secrets & Connect · Show Output · Toggle Verbose Logging
🔐 Seguridad
Contraseñas en SecretStorage de VS Code; no se copian credenciales al servidor. Con fingerprint
se verifica identidad del host. Recomendado: claves SSH + useSshAgent: true
.
Uninstall: remove the extension; no server agents are installed.