SSH File Explorer

A powerful VS Code extension for managing SSH connections and browsing remote files through an intuitive WebView interface.
Features
Connection Management
- Add SSH Connections: Easily create and save SSH connection configurations
- Edit Connections: Modify existing connection settings
- Delete Connections: Remove unwanted saved connections
- Import/Export Connections: Backup and transfer your connection configurations (encrypted credentials)
- Connect/Disconnect: Quick connection toggling with visual status indicators
- Multiple Simultaneous Connections: Keep several servers connected and switch the active connection
- SSH Key Passphrase Support: Encrypted private keys with retry logic and clear error messages
File Browsing & Management (WebView)
- Browse remote directories and files through a WebView interface
- Open and edit remote files directly in VS Code
- Create files and folders, rename, delete, copy / cut / paste
- File properties panel (size, permissions, dates, copy path)
- Details, list and mosaic views with sorting, search bar, tree navigation
- Improved details view: sticky sortable header, permission dots (read/write/execute), permissions, size and date columns with ellipsis handling
- View indicator badge next to the view toggle showing the current view (Liste / Détails / Mosaïque)
- Icon themes: Windows 11 (Fluent-like yellow folders + files with coloured label footer) and macOS (rounded blue folders + files with folded corner), switchable from the toolbar (🎨) and live-synced with the
sshFileExplorer.iconTheme setting
- Themed toolbar and context-menu icons adapting to the selected icon theme
- Responsive toolbar: controls wrap onto multiple rows on narrow panels, grouped into logical sections with adaptive spacing
- System stats bar (CPU / RAM / disk) with periodic refresh
- Supports files up to 10MB (configurable)
- Option to display hidden files (files starting with
.)
- Permission-aware operations (read/write checks with clear errors)
SFTP Transfer
- Download remote files via SFTP
- Upload local files to the remote server via SFTP
- Compress any file or folder to a
.zip archive created alongside the source
- Extract a
.zip file into a new folder alongside the archive
- Safe extraction (Zip-Slip protection, rejects absolute paths, symlinks, password-protected archives)
- Requirements on the remote host:
zip for compression, python3 for extraction
Terminal Integration
- Native SSH Terminal: opens
ssh in a VS Code terminal
- SSH2 Terminal: reuses the existing SSH connection (works without the system
ssh binary)
- Open terminal from the tree view or from the file explorer
Connection Health Monitoring
- Periodic health checks (
echo ping by default, configurable)
- States: healthy / degraded / suspect / unhealthy / reconnecting
- Commands: Show Health Status, Check Health Now, Show Health History
- Optional auto-reconnect with configurable attempts, delay and notifications
- Live health badge in the file explorer WebView
User Interface
- Dedicated activity bar icon for easy access
- Tree view showing saved and connected connections
- Visual status indicators for connection state
- Context menus for quick actions
- Refresh functionality to update connection list
Installation
From VS Code Marketplace
- Open VS Code
- Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
- Search for "SSH File Explorer"
- Click Install
- Reload VS Code if prompted
From VSIX File
- Download the
.vsix file from the releases page
- Open VS Code
- Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
- Click the "..." menu and select "Install from VSIX..."
- Select the downloaded
.vsix file
- Reload VS Code
Usage
Getting Started
Open the SSH File Explorer panel
- Click the SSH File Explorer icon in the activity bar, or
- Use the Command Palette (Ctrl+Shift+P / Cmd+Shift+P) and run
SSH: Focus on SSH Explorer
Create a new connection
- Click the "+" button in the SSH File Explorer panel, or
- Right-click in the panel and select "New Connection", or
- Use the Command Palette and run
SSH: New Connection
Fill in connection details
- Connection Name: A friendly name to identify this connection
- Host: The SSH server hostname or IP address
- Port: SSH port (default: 22)
- Username: Your SSH username
- Password (optional): Your SSH password (if using password authentication)
- Private Key (optional): Path to your SSH private key file (if using key-based authentication)
- Passphrase (optional): Passphrase for encrypted private keys (prompted on connect if needed)
Connect to the server
- Click on a saved connection and click the plug icon, or
- Right-click on a connection and select "Connect"
Managing Connections
Edit a Connection
- Click the pencil icon in the connection's context menu, or
- Right-click on a connection and select "Edit"
Delete a Connection
- Click the trash icon in the connection's context menu, or
- Right-click on a connection and select "Delete"
Disconnect
- Click the disconnect icon next to a connected server, or
- Right-click on a connected server and select "Disconnect"
Switch Active Connection
- Use the Command Palette and run
SSH: Switch Active Connection
- Useful when several servers are connected at the same time
Export Connections
- Click the upload icon in the panel header, or
- Use the Command Palette and run
SSH: Export Connections
- Select a location to save the connection configuration file
Import Connections
- Click the download icon in the panel header, or
- Use the Command Palette and run
SSH: Import Connections
- Select a previously exported connection configuration file
Browsing Files
Once connected:
- Click on a connected server to open the file browser
- Navigate through directories by double-clicking folders
- View file details including size and modification date
- Open files by double-clicking them
- Use the toolbar / context menu to create, rename, delete, copy, cut, paste
- Right-click a file for download, properties, or ZIP actions
- Switch views with the view toggle button — the badge next to it shows the current view (Liste / Détails / Mosaïque)
- Switch icon theme with the 🎨 selector in the toolbar (Windows 11 / macOS)
Note: Files larger than 10MB cannot be opened in the editor by default. You can adjust this limit in the extension settings.
SFTP Upload / Download
- Download: right-click a remote file (or
SSH: Download File (SFTP))
- Upload: use the upload button in the explorer (or
SSH: Upload Files (SFTP)) and pick local files
- Compress: right-click a file or folder → Compress to ZIP → enter an archive name ending with
.zip
- Extract: right-click a
.zip file → Extract → enter a new folder name
- The archive / folder is created alongside the source
- Remote requirements:
zip installed (compress), python3 installed (extract)
Terminals
- Native terminal: right-click a connected server → Open Native SSH Terminal
- SSH2 terminal: right-click a connected server → Open SSH2 Terminal (reuses connection)
- From the file explorer toolbar: open a terminal or open the current folder in a terminal
Health Monitoring
SSH: Show Connection Health Status — overview of all monitored connections
SSH: Check Health Now (all connections) — force an immediate check
SSH: Show Health History — history for one connection (from its context menu)
- Configure interval, thresholds, auto-reconnect and notifications in settings (see below)
Configuration
The extension provides the following configurable settings:
| Setting |
Type |
Default |
Description |
sshFileExplorer.defaultPort |
number |
22 |
Default SSH port for new connections |
sshFileExplorer.showHiddenFiles |
boolean |
false |
Show hidden files (starting with .) |
sshFileExplorer.maxFileSize |
number |
10485760 |
Maximum file size in bytes for opening in editor (default: 10MB) |
sshFileExplorer.healthCheckInterval |
number |
15000 |
Interval between connection health checks in milliseconds |
sshFileExplorer.healthPingTimeout |
number |
5000 |
Timeout for health check ping command in milliseconds |
sshFileExplorer.healthSuspectThreshold |
number |
2 |
Consecutive failures before marking connection as suspect |
sshFileExplorer.healthFailureThreshold |
number |
3 |
Consecutive failures before marking connection as unhealthy |
sshFileExplorer.healthAutoReconnect |
boolean |
false |
Enable automatic reconnection when connection is lost |
sshFileExplorer.healthMaxReconnectAttempts |
number |
3 |
Maximum number of auto-reconnect attempts |
sshFileExplorer.healthReconnectDelay |
number |
5000 |
Delay between reconnect attempts in milliseconds |
sshFileExplorer.healthShowNotifications |
boolean |
true |
Show notifications on connection health state changes |
sshFileExplorer.healthPingCommand |
string |
"echo ping" |
Command to execute for health check pings |
sshFileExplorer.iconTheme |
string (windows11 | macos) |
"windows11" |
Icon theme used in the SSH File Explorer webview (switchable from the toolbar 🎨, live-synced) |
Changing Settings
- Open VS Code Settings (Ctrl+, / Cmd+,)
- Search for "SSH File Explorer"
- Modify the desired settings
Or edit your settings.json directly:
{
"sshFileExplorer.defaultPort": 22,
"sshFileExplorer.showHiddenFiles": true,
"sshFileExplorer.maxFileSize": 20971520,
"sshFileExplorer.healthCheckInterval": 15000,
"sshFileExplorer.healthPingTimeout": 5000,
"sshFileExplorer.healthSuspectThreshold": 2,
"sshFileExplorer.healthFailureThreshold": 3,
"sshFileExplorer.healthAutoReconnect": false,
"sshFileExplorer.healthMaxReconnectAttempts": 3,
"sshFileExplorer.healthReconnectDelay": 5000,
"sshFileExplorer.healthShowNotifications": true,
"sshFileExplorer.healthPingCommand": "echo ping",
"sshFileExplorer.iconTheme": "windows11"
}
Commands
| Command |
Title |
sshFileExplorer.addConnection |
New Connection |
sshFileExplorer.connect |
Connect to Server |
sshFileExplorer.disconnect |
Disconnect |
sshFileExplorer.editConnection |
Edit Connection |
sshFileExplorer.deleteConnection |
Delete Connection |
sshFileExplorer.refresh |
Refresh Connections |
sshFileExplorer.focus |
Focus on SSH Explorer |
sshFileExplorer.exportConnections |
Export Connections |
sshFileExplorer.importConnections |
Import Connections |
sshFileExplorer.switchActiveConnection |
Switch Active Connection |
sshFileExplorer.downloadFile |
Download File (SFTP) |
sshFileExplorer.uploadFile |
Upload Files (SFTP) |
sshFileExplorer.openNativeTerminal |
Open Native SSH Terminal |
sshFileExplorer.openSSH2Terminal |
Open SSH2 Terminal (reuses connection) |
sshFileExplorer.showHealthStatus |
Show Connection Health Status |
sshFileExplorer.checkHealthNow |
Check Health Now (all connections) |
sshFileExplorer.showHealthHistory |
Show Health History |
Keyboard Shortcuts
| Command |
Shortcut (Windows/Linux) |
Shortcut (Mac) |
| Open SSH Explorer |
- |
- |
| New Connection |
- |
- |
| Connect to Server |
- |
- |
Note: Default shortcuts are not provided but you can add custom keybindings through VS Code's Keyboard Shortcuts settings.
Requirements
- VS Code: Version 1.85.0 or higher
- SSH Server: A running SSH server accessible from your network
- SSH Credentials: Valid username/password or SSH key pair for authentication
- Remote tools (optional):
zip for compression, python3 for safe ZIP extraction
Troubleshooting
Connection Failed
- Verify the host and port are correct
- Check your network connection
- Ensure the SSH server is running and accessible
- Verify your username and password/key are correct
Cannot Open Large Files
- Increase the
sshFileExplorer.maxFileSize setting
- Or edit the file using a terminal-based editor
Authentication Issues
- Ensure your SSH key has the correct permissions (readable only by you)
- If the key is encrypted, enter the passphrase when prompted
- Try using password authentication instead
- Check that your SSH server allows the authentication method you're using
ZIP Compression Fails
- Ensure
zip is installed on the remote server (command -v zip)
- Ensure the archive name ends with
.zip and does not already exist
- Check write permission in the parent directory
- Ensure
python3 is installed on the remote server (command -v python3)
- Only regular
.zip files are supported (no password-protected archives, no symlinks)
- Extract into a new folder alongside the ZIP file
- Check write permission in the parent directory
Health Shows Suspect / Unhealthy
- Run
SSH: Check Health Now to force a fresh check
- Check network latency and server load
- Adjust
healthPingTimeout, thresholds, or enable healthAutoReconnect
- View history with
SSH: Show Health History
Reporting Issues
If you encounter any bugs or have feature requests, please open an issue on GitHub with:
- A clear description of the problem
- Steps to reproduce the issue
- Your operating system and VS Code version
- Any relevant error messages
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature)
- Commit your changes (
git commit -m 'Add some AmazingFeature')
- Push to the branch (
git push origin feature/AmazingFeature)
- Open a Pull Request
Roadmap
- [X] Support for SSH key passphrases
- [X] SFTP file upload/download functionality
- [X] Multiple simultaneous connections
- [X] Terminal integration
- [X] Connection health monitoring
- [X] ZIP compression and extraction
- [X] Icon themes (Windows 11 / macOS) with toolbar switcher
- [X] Improved details view (sticky header, permission indicators, view badge)
- [ ] Search functionality across remote files
Changelog
See CHANGELOG.md for details on recent updates.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright
© 2026 El Houssine DARRAZI. All rights reserved.
SSH File Explorer is developed and maintained by El Houssine DARRAZI.
For more information, visit the GitHub repository or contact the author.
| |