A modern Windows desktop app for mounting remote SSH filesystems as Windows drive letters with a centralized solution for SSH access
Built on top of sshfs-win and WinFsp.
Download · Try the live demo · Documentation · Report a bug
Manage all your SSH servers in one place: mount them as Windows drives with one click, open a terminal that logs in by itself, and move files with a dual-pane file browser — for Linux and Windows servers, with your credentials stored encrypted.
- Features
- Screenshots
- Installation
- Command-line companion
- Development
- Feedback and contributing
- Credits and history
- License
- One-click mounting of remote SSH filesystems as Windows drive letters via SSHFS-Win / WinFsp.
- Mount or unmount everything at once, or only the hosts of one group.
- Free drive letters are detected automatically; several hosts can share a letter if you allow it, and ghost drives can be cleaned up.
- System tray with a quick toggle for every host; the app can keep running there when you close the window.
- Start with Windows and reconnect the drives that were mounted last time.
- Auto-reconnect on connection loss: a mounted drive reconnects by itself when the connection drops.
- Integrated terminal with as many sessions per host as you like, in tabs. It logs in by itself with the stored password or SSH key.
- Windows OpenSSH or PuTTY instead, as the default or, from a host's right-click menu, just this once.
- SFTP, FTPS and FTP, built into the main window, with every host in its own tab.
- This PC and the server side by side, with drag & drop, folder trees and a clickable path bar.
- A transfer queue that pauses, resumes and continues interrupted transfers after a reconnect.
- Undo and redo for moves, renames and new folders; conflict handling with file comparison.
- Edit files in your own programs: saving uploads them back.
- Folder sync with a preview, server-side archives, and files fetched from a URL straight onto the server.
- FTP over TLS in explicit (AUTH TLS, port 21) and implicit (port 990) mode, and plain FTP for legacy servers.
- Servers running OpenSSH for Windows work everywhere: in the terminal, the file browser, the system info and as mounted drives, including subfolders such as
C:\Projects. - Live system info: OS, CPU, RAM, drives, uptime and load, plus the temperature on Linux.
- No setup at the first start: the app starts in single-user mode and signs you in automatically; its password is kept in Windows Credential Manager.
- Accounts with passwords when several people share the computer, each with their own connections, language and look.
- Encrypted storage: passwords, hosts, user names and paths are encrypted with AES-256-GCM, with a key only your account can unlock.
- Password, public-key or SSH certificate authentication per host, or ask each time. A certificate is picked up when it lies next to the key as
<key>-cert.pub. - Host keys are verified, and a changed key of a known server is reported.
- Six languages: English, German, Spanish, Russian, Dutch and Arabic (right-to-left), chosen per user — right on the login screen, too.
- Four themes — Black, Blue (classic), Gray and Light — with an accent colour of your own and the text colour on it.
- Filter the connection list by name, host or user name as you type.
- Groups and templates to keep many hosts tidy and set up new ones quickly.
- Help where you need it: every field of the connection form links to the online documentation, and the empty overview shows tips that fit your setup.
- Command-line companion (
NeoSSHWinManager-cli.exe) for scripts and agents, with a history of everything it ran — see below.
Every picture shows the four themes: Black (top left) and Gray (bottom right) with the accent colour #228c2b, Light (top right) and Blue (classic) (bottom left) with the default accent. All hosts, users and data are fictional.

File browser: this PC and the server side by side
More screenshots: filter, connection form, system info, user management, settings, login, tray

Add / edit a connection, with help for every field
![]() Login with language picker |
![]() System tray with quick mount toggles |
-
Install the prerequisites for mounting drives:
Tool Download WinFsp https://github.com/winfsp/winfsp/releases SSHFS-Win https://github.com/winfsp/sshfs-win/releases If one of them is missing, the app says so at the start and links to the download.
-
Download the app from the latest release:
NeoSSHWinManager-Setup-<version>.exe— the installer, with a desktop shortcut, "start with Windows", the language and theme for the first start, and the command-line companion as an optional component.NeoSSHWinManager.exe— the portable app, without installation.sha256sums.txt— checksums to verify the download.
-
Start the app. It starts in single-user mode: it creates an account with a random password, keeps that password in Windows Credential Manager and signs you in automatically. All SSH credentials you enter are encrypted with a key that this password protects. To sign in with a password of your own, create an account under User Management; your connections and settings are kept. If Windows Credential Manager is not available, the app asks you to create an account instead.
Updates are found by the app itself and installed at the next start if you want. Something not working? See troubleshooting.
NeoSSHWinManager-cli.exe gives scripts and agents access to saved connections. It does not read the database itself: it asks the running app for a connection that has CLI access enabled. Full reference: CLI documentation.
Set up:
- Start
NeoSSHWinManager.exeand sign in. - Open the connection's form and enable CLI access.
- Generate or copy the CLI access key shown there.
Use:
# interactive SSH session in the current terminal
NeoSSHWinManager-cli.exe --connect-cli "<access_key>"
# run one command and print its output
NeoSSHWinManager-cli.exe --connect-cli "<access_key>" --exec "uname -a"
NeoSSHWinManager-cli.exe --connect-cli "<access_key>" --exec "cd /var/www && ls -la"- The exit code is the remote command's exit code, and the output can be redirected to a file.
- Everything run this way is listed in the app under the connection's details → "Show CLI history".
--connect-cli -reads the access key from stdin, so it does not show up in the process list.-connectsshis accepted for compatibility.- If the app is not running, no one is signed in, the key is invalid or CLI access is disabled for that connection, the command exits with an error.
Requires Python 3.11+ and the prerequisites above.
git clone https://github.com/gregorkrebs/neosshwinmanager.git
cd neosshwinmanager
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
python main.pyThe CLI companion runs from source as python cli_main.py --connect-cli "<access_key>" --exec "hostname".
python -m pytest tests/ -v.\build_dual.ps1 # NeoSSHWinManager.exe + NeoSSHWinManager-cli.exe in dist/
.\installer\build_installer.ps1 # both executables, then the installer (needs Inno Setup 6)NeoSSHWinManager.exe— the GUI app (windowed subsystem), built fromNeoSSHWinManager.spec.NeoSSHWinManager-cli.exe— the CLI companion (console subsystem), built fromNeoSSHWinManager-cli.spec.
sshfs-win exposes remote SSH paths under a UNC format that Windows net use understands:
net use X: \\sshfs.r\user@host!22\var\www /persistent:no
The app builds this command from the connection settings and tracks the mount state via drive enumeration.
neosshwinmanager/
├── main.py # GUI entry point
├── cli_main.py # CLI entry point (companion exe)
├── build_dual.ps1 # Builds the GUI and the CLI exe
├── installer/ # Inno Setup script and its build script
├── assets/ # Icons, terminal page, screenshots
├── src/
│ ├── auth_manager.py # Accounts, sessions, encrypted connections and settings
│ ├── crypto.py # Encryption, Windows Credential Manager
│ ├── database.py # SQLite schema and migrations
│ ├── config.py # Data models
│ ├── sshfs_controller.py # Mount / unmount via net use
│ ├── drive_utils.py # Drive letters
│ ├── ssh_launcher.py # OpenSSH / PuTTY terminals, CLI sessions
│ ├── sftp_client.py # SFTP for the file browser and system info
│ ├── ftp_client.py # FTP / FTPS
│ ├── remote_os.py # Detects Windows OpenSSH servers
│ ├── updater.py # Update check and installation
│ ├── i18n.py # Translation loader, language list
│ ├── tips.py # Tips in the empty overview
│ ├── help_links.py # Links into the online documentation
│ ├── translations/ # en, de, es, ru, nl, ar
│ ├── filebrowser/ # File browser (SFTP / FTP / FTPS)
│ ├── terminal/ # Integrated terminal (xterm.js bridge)
│ └── ui/ # Main window, dialogs, theme, widgets
└── tests/ # pytest suite
Language is stored per user. To add one:
- Copy
src/translations/en.jsontosrc/translations/<code>.jsonand translate the values. - Add the code to
_SUPPORTEDand its name toLANGUAGE_NAMESinsrc/i18n.py. - For a right-to-left language, also add the code to
_RTLinsrc/i18n.py; the app then mirrors its layout. - Add the code to
LANGSintests/test_ui_translations.pyandtests/test_tips.py, so the tests check the new file for missing texts.
Missing keys fall back to English.
Found a bug or have an idea? Open an issue — bug reports and feature requests are equally welcome. For a bug report, "Copy version info" in the app's About window puts the app version and Windows build on the clipboard.
The idea for this tool was inspired by the original SSHWinManager, which was written in JavaScript / Electron by a different author.
NEO SSH-Win Manager is a complete, from-scratch rewrite in Python (PyQt6), developed by Gregor Krebs. No code from the original project is reused. The goals, scope and architecture have changed substantially:
- Native Python / PyQt6 stack instead of Electron.
- Multi-user support with per-user encrypted SSH credential storage.
- Per-user language preference.
- Per-connection live system info panel.
- Optional CLI access key for agent / automation integration.
- System tray with quick mount toggles.
- Optional PuTTY / OpenSSH terminal launch per connection.
Single-user mode comes from the community fork ultrabuild-katzi/neosshwinmanager-single-user by notstevy.
MIT — do whatever you want with it. Attribution is appreciated but not required.








