NEO SSH-Win Manager LogoNEO SSH-Win Manager
GitHub
Changelog

Was sich geändert hat.

Alle veröffentlichten Versionen — direkt aus den GitHub-Releases. Vollständige Commit-Historie im GitHub-Verlauf.

  • Neue Server funktionieren sofort im Terminal. Bei einem gerade hinzugefügten Server hat das Terminal nicht gefragt, ob du dem Schlüssel des Servers vertraust, und nach einer halben Minute gemeldet, die Verbindung sei fehlgeschlagen – als wären Host oder Passwort falsch. Jetzt fragt es, und nach deiner Bestätigung öffnet sich das Terminal.
Datei Größe
NeoSSHWinManager.exe 185.3 MB
NeoSSHWinManager-Setup-1.7.2.exe 215.9 MB
NeoSSHWinManager-cli.exe 30.5 MB
  • Die App startet nach einem Update wieder von selbst. Nach dem In-App-Update auf 1.7.0 wurde die neue Version zwar installiert, ihr Start scheiterte aber mit der Meldung „Failed to load Python DLL“, und du musstest die App selbst starten. Ab 1.7.1 öffnet sich die App nach jedem Update wieder von allein, auch beim Update von 1.7.0 oder 1.6.1.
Datei Größe
NeoSSHWinManager.exe 184.5 MB
NeoSSHWinManager-Setup-1.7.1.exe 215.1 MB
NeoSSHWinManager-cli.exe 30.5 MB
  • Sofort loslegen, ohne Konto einzurichten. Eine neue Installation meldet dich automatisch an (Einzelbenutzer-Modus). Das Passwort ist zufällig, liegt in der Windows-Anmeldeinformationsverwaltung und ist durch deine Windows-Anmeldung geschützt.
  • Nutzen mehrere Personen den Computer oder meldest du dich lieber mit Passwort an, lege unter Benutzerverwaltung → „Anmeldemodus der Anwendung“ ein Konto an. Deine Verbindungen und Einstellungen bleiben erhalten.
  • Eine Installation mit einem Konto kann an derselben Stelle in den Einzelbenutzer-Modus wechseln. Das Konto heißt danach „default“.
  • Installationen mit Passwort-Anmeldung melden sich nach dem Update weiter so an. Ist die Windows-Anmeldeinformationsverwaltung nicht verfügbar, bittet dich die App wie bisher, ein Konto anzulegen.
  • Jede Verbindung finden, während du tippst. Die Lupe über der Verbindungsliste oder Strg+F öffnet ein Filterfeld. Es durchsucht Name, Host und Benutzername, mehrere Wörter grenzen die Liste weiter ein, und du siehst, wie viele Verbindungen passen. Was du eingibst, bleibt stehen, auch über Neustarts hinweg, bis du es mit dem × im Feld löschst.
  • Ein neu gestalteter Anmeldebildschirm. Aufgeräumter, mit Symbolen in den Feldern, einem Knopf, der das eingegebene Passwort zeigt, einem Hinweis bei aktivierter Feststelltaste und Fehlermeldungen in einem gut sichtbaren Kasten.
  • Ein Sprachmenü oben rechts stellt den Anmeldebildschirm sofort um. Die Sprache, die du dort wählst, wird deine Sprache in der App.
  • Der Anmeldebildschirm übernimmt Design, Akzentfarbe und Sprache des Benutzers, der sich zuletzt angemeldet hat.
  • Schwarz ersetzt Dunkel. Ein klassischer Dunkelmodus in reinem Schwarz und Grau, ohne Blaustich. Hast du Dunkel genutzt, hast du jetzt Schwarz. Der bisherige blaue Look bleibt als „Blau (classic)“ erhalten, in den Einstellungen und im Installer.
  • Frei und Open Source, mit allem. Die Pro-Lizenz ist endgültig Geschichte. Die App enthält keine Lizenzprüfung mehr und nimmt keinen Kontakt mehr zum Lizenzserver auf.
  • Tipps in der leeren Übersicht. Wo bisher „Bereit für den nächsten Schritt“ stand, bekommst du jetzt einen Tipp („Wusstest du schon?“): 60 kurze Hinweise zu Funktionen, Tastenkürzeln und Einstellungen und ein paar Witze, in allen sechs Sprachen. Du siehst nur Tipps, die zu deiner Einrichtung passen, bei jeder Rückkehr zur Übersicht einen neuen, und „Nächster Tipp“ zeigt einen weiteren.
  • Hilfe direkt im Verbindungsformular. Ein ? oben im Formular und neben jedem Feld öffnet die Online-Dokumentation an der Erklärung zu diesem Feld. Unter dem Remote-Pfad steht ein Hinweis, dass das meist dein Home-Verzeichnis auf dem Server ist und der Befehl pwd es nach einer SSH-Anmeldung anzeigt.
  • Die Textfarbe auf der Akzentfarbe wählen. Die Auswahl der Akzentfarbe hat eine neue Zeile für den Text auf akzentfarbenen Knöpfen: automatisch, weiß, schwarz oder eine eigene Farbe, mit Vorschau. Auch die automatische Wahl ist besser: Helle Akzente wie Orange, ein kräftiges Grün oder Cyan bekommen jetzt dunklen Text, Blau, Violett, Rot oder Pink behalten weißen Text.
  • Ein Netz aus verbundenen Punkten im Hintergrund der leeren Übersicht, der Details einer Verbindung, der Benutzerverwaltung, deines Profils und des Anmeldebildschirms. Jede Seite und jede Verbindung hat ihr eigenes Muster, und der Text bleibt gut lesbar. Abschalten kannst du es unter Einstellungen → Design.
  • Die ganze Oberfläche folgt deiner Sprache. Einige Texte blieben auf Deutsch oder Englisch, egal welche Sprache du gewählt hattest: die Tooltips der Fensterknöpfe, „Abbrechen“ beim Umbenennen oder Anlegen einer Datei im Dateibrowser, die Knöpfe einiger Rückfragen, „Details kopieren“ nach einem unerwarteten Fehler, der Fehler-Hinweis in der Statusleiste und die Zahl der CPU-Kerne in der Systeminfo. Sie sind jetzt übersetzt.
  • Rückfragen, die etwas löschen, sind in jeder Sprache rot. Beim Löschen einer Verbindung, eines Benutzers oder einer Vorlage, beim Löschen von Dateien auf dem Server und beim Leeren des CLI-Verlaufs war der rote Bestätigungsknopf nur auf Englisch und Deutsch zu sehen.
  • Aufgeräumte Kopfzeile und Titelleiste. Die Knöpfe über der Verbindungsliste sitzen mittig in ihrer Leiste, und der Zähler „… aktiv · … verbunden“ wird nicht mehr abgeschnitten. Die Kopfleiste läuft über die Lücke zwischen Verbindungsliste und rechtem Bereich hinweg, und in jedem Design übernimmt die Titelleiste den dunkleren Ton der Seitenleiste.
  • Ein freundlicheres Feld für das Prüfintervall. In den Einstellungen sitzt das Prüfintervall zwischen zwei runden Knöpfen, − und +. Hältst du einen Knopf gedrückt, zählt er weiter, und die Zahl lässt sich weiterhin eintippen.
  • Das Anmeldefenster erscheint etwas früher. Das Hauptfenster wird jetzt erst nach der Anmeldung geladen.
  • Im Einzelbenutzer-Modus ist der Profil-Knopf ausgeblendet, weil es kein Passwort zu ändern gibt. Er kommt zurück, sobald du ein Konto anlegst.
  • Keine aufblitzenden kleinen Fenster mehr nach der Anmeldung. Während das Hauptfenster aufgebaut wurde, erschien und verschwand für jeden SFTP-Host in deiner Liste kurz ein kleines leeres Fenster.
  • Knopftexte mit „&“, etwa „Konto erstellen & starten“, verlieren das „&“ nicht mehr.
Datei Größe
NeoSSHWinManager.exe 184.5 MB
NeoSSHWinManager-Setup-1.7.0.exe 215.1 MB
NeoSSHWinManager-cli.exe 30.5 MB
  • Drag & Drop im Dateibrowser funktioniert wieder. In 1.6.0 zeigte das Ablegen von Dateien auf der Dateiliste oder im Ordnerbaum eine Fehlermeldung an und es wurde nichts übertragen – egal, ob die Dateien von der anderen Seite des Browsers, aus dem Windows Explorer oder von einem eingebundenen Laufwerk stammten. Uploads, Downloads und das Verschieben per Drag & Drop funktionieren nun wie vorgesehen. Das Ablegen auf der Pfadleiste war nicht betroffen.
  • FileView.dropEvent (src/filebrowser/ui/pane.py) und FsTree.dropEvent (src/filebrowser/ui/tree.py) riefen QAbstractItemView.stopAutoScroll() auf, was in PyQt6 nicht bereitgestellt wird. Jeder Drop auf eine Dateiliste oder einen Ordnerbaum löste einen AttributeError aus, bevor die Übertragung oder das Verschieben in die Warteschlange eingereiht wurde. Beide setzen die Ansicht nun über dragLeaveEvent() der Basisklasse zurück, was den Timer für das automatische Scrollen stoppt und die Ansicht in NoState zurückversetzt.
  • Ein neuer UI-Test legt Dateien von der PC-Seite und als Explorer-URLs auf der Dateiliste und im Ordnerbaum des Servers ab und prüft, ob sie ankommen.
  • Drag & drop im Datei-Browser funktioniert wieder. In 1.6.0 führte das Ablegen von Dateien auf der Dateiliste oder im Ordnerbaum zu einer Fehlermeldung und es wurde nichts übertragen – egal, ob die Dateien von der anderen Seite des Browsers, aus dem Windows Explorer oder von einem eingebundenen Laufwerk stammten. Uploads, Downloads und das Verschieben per Drag & drop funktionieren nun wie vorgesehen. Das Ablegen auf der Pfadleiste war davon nicht betroffen.
  • Vollständige Unterstützung für Windows-Server. Server mit OpenSSH for Windows funktionieren jetzt überall in der App, nicht nur im Terminal:
  • Dateien durchsuchen, hoch- und herunterladen. Der Datei-Browser öffnet sich in deinem Windows-Benutzerordner und versteht Windows-Pfade wie C:\Users\me oder W:\data.
  • Einen Windows-Server als Laufwerk einbinden, einschließlich Unterordnern wie C:\Projects. Das Einbinden von / öffnet nun deinen Home-Ordner statt einer Liste von Laufwerksbuchstaben, die der Explorer nicht anzeigen kann.
  • Die Systeminfo zeigt die Windows-Version, CPU, den Arbeitsspeicher und die Laufwerke des Servers an – genau wie unter Linux.
  • Das Packen und Entpacken von Archiven, „Von URL laden“ und „Terminal hier öffnen“ nutzen auf Windows-Servern PowerShell.
  • Ein komplett neuer Datei-Browser, der direkt im Hauptfenster integriert ist. Öffne ihn über die neue Ordner-Schaltfläche in der Seitenleiste oder von einem beliebigen Host aus.
  • Alle deine Hosts an einem Ort, jeder in einem eigenen Tab. „Verbinden“ (Ctrl+Shift+O) öffnet einen weiteren gespeicherten Host, ohne den Browser zu verlassen.
  • Dieser PC und der Server nebeneinander (F9), mit Drag & drop dazwischen, optionalen Ordnerbäumen und einer klickbaren Pfadleiste, auf der Dateien ebenfalls abgelegt werden können.
  • Eine Übertragungswarteschlange, die du anhalten, fortsetzen, abbrechen und wiederholen kannst. Unterbrochene Übertragungen werden an der Stelle fortgesetzt, an der sie gestoppt wurden, und bei Verbindungsabbrüchen wird die Verbindung automatisch wiederhergestellt.
  • Rückgängigmachen und Wiederholen (Ctrl+Z / Ctrl+Y) für Verschiebungen, Umbenennungen und neue Ordner.
  • Wenn eine Datei bereits existiert, hast du die Wahl: überschreiben, überspringen, beide behalten oder die beiden Dateien zuerst vergleichen.
  • Dateien öffnen sich im Programm deiner Wahl, und beim Speichern werden sie wieder auf den Server hochgeladen.
  • Ordnersynchronisierung mit Vorschau, Archive direkt auf dem Server packen und entpacken, Dateien von einer Webadresse direkt auf den Server laden, Berechtigungen und Ordnergrößen.
  • Kein Limit mehr für Terminal-Sitzungen. Bisher erlaubte das integrierte Terminal drei gleichzeitige Sitzungen. Diese Beschränkung wurde aufgehoben und der Bereich für die Pro-Lizenz aus den Einstellungen entfernt.
  • Keine Abstürze mehr beim Start auf sicherheitsgehärteten Windows-Systemen (#22). Die Versionen 1.4.0 bis 1.5.5 konnten sich aus ihrem eigenen Datenordner aussperren und stürzten dann bei jedem Start ab. 1.6.0 repariert die Ordnerberechtigungen selbstständig, meist ohne weitere Nachfragen.
  • Eine Zeile mit „...“ ganz oben in jeder Ordnerliste bringt dich eine Ebene nach oben.
  • Beim Verschieben von Dateien oder Ordnern per Drag & drop wird vor der Ausführung nachgefragt. Du kannst diese Nachfrage deaktivieren und unter Einstellungen → Ansicht wieder einschalten.
  • Der Ordnerbaum des Servers beginnt im Ordner der Verbindung, sodass er auch bei Hosting-Accounts funktioniert, die / oder /home nicht öffnen dürfen.
  • Wenn du den anonymen Nutzungsstatistiken zugestimmt hast, erfassen diese jetzt auch, welche Oberflächensprache du nutzt, damit wir sehen können, welche Übersetzungen wichtig sind. Ohne deine Einwilligung wird nichts übertragen. Der Zustimmungsdialog führt nun genau auf, was gesendet wird, und wird in deiner Sprache angezeigt.
  • Die Statuszeile im Verbindungsbereich:
  • Das grüne Badge „Verbunden“ und der grüne Ordner öffnen das Laufwerk im Explorer.
  • Ein grauer Ordner bedeutet „nicht eingebunden“; ein Klick bindet die Verbindung ein.
  • Ein zweiter, mit „FTP“ gekennzeichneter Ordner öffnet den Dateibrowser.
  • Der Unmount-Button ist jetzt rot, damit klar ist, dass er die Verbindung trennt.
  • Die Systeminformationen unter Linux lesen Arbeitsspeicher- und Festplattengrößen zuverlässiger aus und zeigen hinter dem Lade-Popup nicht mehr „Lädt…“ an.
  • Die erste Abfrage der Systeminformationen bei einem neuen Host führt nicht mehr zu einem Fehler.
  • Der Dateibrowser wies viele Hosts ohne Nachfrage mit „Host-Schlüssel wurde abgelehnt“ ab. Jetzt fragt er nach, zeigt den Fingerabdruck des Schlüssels, den der Server tatsächlich vorweist, und warnt deutlich, wenn sich der Schlüssel eines bekannten Hosts geändert hat.
  • Wenn du den Dateibrowser für einen Host, bei dem die Verbindung fehlgeschlagen war, erneut öffnest, wird nun ein neuer Verbindungsversuch gestartet.
  • Die beim Start angebotene Berechtigungsreparatur konnte das Problem hinter dem obigen Absturz nicht beheben. Wurde sie mit dem Passwort eines anderen Administrators bestätigt, konnte sie den Datenordner zudem an diesen Administrator übertragen. Beides wurde behoben. Falls der Ordner weiterhin nicht geöffnet werden kann, erklärt die App nun, wie du das Problem lösen kannst, anstatt abzustürzen.
  • Das alte SFTP-Browser-Fenster, ersetzt durch den neuen Dateibrowser.
Datei Größe
NeoSSHWinManager.exe 181.4 MB
NeoSSHWinManager-Setup-1.6.1.exe 211.8 MB
NeoSSHWinManager-cli.exe 30.3 MB
  • Vollständige Unterstützung für Windows-Server. Server mit OpenSSH for Windows funktionieren nun überall in der App, nicht nur im Terminal:
  • Dateien durchsuchen, hoch- und herunterladen. Der Dateibrowser öffnet sich in deinem Windows-Benutzerordner und versteht Windows-Pfade wie C:\Users\me oder W:\data.
  • Binde einen Windows-Server als Laufwerk ein, einschließlich Unterordnern wie C:\Projects. Beim Einbinden von / gelangst du nun zu deinem Benutzerordner statt zu einer Liste von Laufwerksbuchstaben, die der Explorer nicht anzeigen kann.
  • Die Systeminfo zeigt die Windows-Version, CPU, den Arbeitsspeicher und die Laufwerke des Servers an – genau wie unter Linux.
  • Das Packen und Entpacken von Archiven, „Von URL laden“ und „Terminal hier öffnen“ nutzen auf Windows-Servern PowerShell.
  • Ein komplett neuer Dateibrowser, direkt im Hauptfenster integriert. Öffne ihn über die neue Ordner-Schaltfläche in der Seitenleiste oder von einem beliebigen Host aus.
  • Alle deine Hosts an einem Ort, jeweils in einem eigenen Tab. „Verbinden“ (Ctrl+Shift+O) öffnet einen weiteren gespeicherten Host, ohne den Browser zu verlassen.
  • Dieser PC und der Server nebeneinander (F9), mit Drag & Drop dazwischen, optionalen Ordnerbäumen und einer anklickbaren Pfadleiste, die auch abgelegte Dateien annimmt.
  • Eine Transfer-Warteschlange, die du anhalten, fortsetzen, abbrechen und wiederholen kannst. Unterbrochene Übertragungen werden an der abgebrochenen Stelle fortgesetzt, und eine getrennte Verbindung wird automatisch wiederhergestellt.
  • Rückgängig machen und Wiederholen (Ctrl+Z / Ctrl+Y) für das Verschieben, Umbenennen und Erstellen neuer Ordner.
  • Wenn eine Datei bereits existiert, hast du die Wahl: Überschreiben, überspringen, beide behalten oder die beiden Dateien zuerst vergleichen.
  • Dateien öffnen sich im Programm deiner Wahl, und beim Speichern werden sie automatisch wieder auf den Server geladen.
  • Ordnersynchronisierung mit Vorschau, Archive direkt auf dem Server packen und entpacken, Dateien von einer Webadresse direkt auf den Server laden, Berechtigungen und Ordnergrößen.
  • Keine Begrenzung für Terminal-Sitzungen mehr. Das integrierte Terminal erlaubte bisher drei Sitzungen gleichzeitig. Dieses Limit ist aufgehoben, und der Bereich für die Pro-Lizenz wurde aus den Einstellungen entfernt.
  • Keine Abstürze beim Start auf sicherheitsgehärteten Windows-Systemen mehr (#22). Die Versionen 1.4.0 bis 1.5.5 konnten sich aus ihrem eigenen Datenordner aussperren und stürzten dann bei jedem Start ab. 1.6.0 repariert die Ordnerberechtigungen selbstständig, meist ganz ohne Nachfrage.
  • Eine „...“-Zeile ganz oben in jeder Ordnerliste bringt dich eine Ebene nach oben.
  • Beim Verschieben von Dateien oder Ordnern per Drag & Drop erfolgt eine Sicherheitsabfrage, bevor etwas verschoben wird. Du kannst die Nachfrage abschalten und unter Einstellungen → Ansicht wieder aktivieren.
  • Der Server-Ordnerbaum startet im Ordner der Verbindung, sodass er auch bei Hosting-Accounts funktioniert, die / oder /home nicht öffnen dürfen.
  • Wenn du den anonymen Nutzungsstatistiken zugestimmt hast, enthalten sie jetzt auch deine gewählte Oberflächensprache, damit wir sehen können, welche Übersetzungen wichtig sind. Ohne deine Einwilligung wird nichts übertragen. Der Zustimmungsdialog listet nun genau auf, was gesendet wird, und wird in deiner Sprache angezeigt.
  • Die Statuszeile im Verbindungspanel:
  • Das grüne Badge „Verbunden“ und der grüne Ordner öffnen das Laufwerk im Explorer.
  • Ein grauer Ordner bedeutet „nicht eingebunden“; ein Klick bindet die Verbindung ein.
  • Ein zweiter, mit „FTP“ gekennzeichneter Ordner öffnet den Dateibrowser.
  • Der Unmount-Button ist nun rot, damit klar ist, dass er die Verbindung trennt.
  • Die Systeminformationen unter Linux lesen Arbeitsspeicher- und Festplattengrößen jetzt zuverlässiger aus und zeigen hinter dem Lade-Popup nicht mehr „Lädt…“ an.
  • Die erste Systeminfo-Abfrage an einen neuen Host führt nicht mehr zu einem Fehler.
  • Der Dateibrowser wies viele Hosts ohne Nachfrage mit „Host-Schlüssel wurde abgelehnt“ ab. Nun fragt er nach, zeigt den Fingerprint des Schlüssels an, den der Server tatsächlich vorweist, und warnt deutlich, wenn sich der Schlüssel eines bekannten Hosts geändert hat.
  • Wird der Dateibrowser für einen Host, bei dem die Verbindung fehlschlug, erneut geöffnet, wird nun ein neuer Verbindungsversuch unternommen.
  • Die beim Start angebotene Berechtigungsreparatur konnte das Problem hinter dem obigen Absturz nicht beheben. Wurde sie mit dem Passwort eines anderen Administrators bestätigt, konnte sie den Datenordner zudem an diesen Administrator übertragen. Beides wurde behoben. Kann der Ordner weiterhin nicht geöffnet werden, erklärt die App nun, wie sich das Problem beheben lässt, anstatt abzustürzen.
  • Das alte SFTP-Browserfenster, ersetzt durch den neuen Dateibrowser.
  • Eine Seite des Hauptfensters. FileBrowserView (src/filebrowser/ui/view.py, ein QWidget) ist Seite 2 im Stack des Hauptfensters, wird bei der ersten Nutzung erstellt und bis zum Beenden der App beibehalten. Das Verlassen der Seite blendet sie lediglich aus: Verbindungen und Übertragungen laufen weiter, auch wenn das Fenster in das Tray minimiert ist. shutdown() trennt beim Beenden der App alle Verbindungen, nachdem das Hauptfenster bezüglich laufender Übertragungen nachgefragt hat.
  • Während die Seite angezeigt wird, sind die eigenen Tastenkombinationen des Hauptfensters (F2, Del, Esc, Ctrl+S/N/E) deaktiviert; andernfalls würde Qt F2/Del des Browsers als mehrdeutig einstufen und keinen von beiden auslösen.
  • „Terminal hier öffnen“ wechselt zurück zur Verbindungsseite, auf der sich das Terminal befindet.
  • Ein Theme-Wechsel passt die Farbgebung des Browsers direkt an (set_theme()); Hosts bleiben dabei verbunden.
  • Seitenleisten-Button mit dem „FTP“-Ordnersymbol des Host-Panels, Tooltip sidebar.file_browser.
  • Ein Browser für alle Hosts. „Verbinden“ (Ctrl+Shift+O) öffnet jede gespeicherte Verbindung in einem neuen Tab. Wird der Browser über das Hauptfenster geöffnet, wird der Host als Tab hinzugefügt oder, falls bereits geöffnet, in den Vordergrund geholt.
  • Tabs desselben Hosts teilen sich einen Login, eine Übertragungswarteschlange und einen Undo-Verlauf. Die Übertragungsliste und das Protokoll zeigen den Host jedes Auftrags an.
  • Schließt du den letzten Tab eines Hosts, wirst du abgemeldet; der Browser bleibt geöffnet und kann sich erneut verbinden.
  • Schlägt die Verbindung zu einem Host fehl, bleibt sein Tab erhalten – samt Fehlermeldung und einem „Erneut verbinden“-Button.
  • Split-Modus (per Klick oder F9): links dieser PC (startet in C:\), rechts der Server; Übertragungen per Drag & Drop, F6 oder Kontextmenü. Die Trennlinie lässt sich bis an jeden Rand ziehen und klappt die jeweilige Seite zu. Beide Seiten verkleinern sich auf etwa dieselbe Breite: Die Pfadleiste verschiebt vorangehende Segmente in ein „…“-Menü, anstatt die gesamte Pfadbreite zu beanspruchen.
  • Optionale Ordnerbäume an den Außenseiten, die verzögert geladen werden und Ordner sowie Dateien anzeigen.
  • Tabs, klickbare Breadcrumbs mit Direkteingabe von Pfaden, Lesezeichen pro Verbindung, ein Filterfeld, Mehrfachauswahl sowie Vor-/Zurück-Maustasten.
  • Ein „...“-Eintrag ganz oben in jeder Liste führt eine Ebene nach oben (per Doppelklick oder Enter), und darauf abgelegte Dateien landen im übergeordneten Ordner. Er bleibt bei jeder Sortierung ganz oben, wird nie herausgefiltert und weder als Datei gezählt noch ausgewählt.
  • Die komplette Palette an Standard-Shortcuts: F2, F5, Del, F7, Alt+Enter, Ctrl+L, Ctrl+F und mehr; F1 listet sie alle auf.
  • Übertragungswarteschlange mit getrennten Limits für parallele Uploads und Downloads sowie Geschwindigkeitsbegrenzungen für Up- und Download. Pausieren, Fortsetzen, Abbrechen und Wiederholen stehen pro Auftrag bereit, zusammen mit einem Übertragungsprotokoll inklusive CSV-Export.
  • SFTP-Übertragungen laufen über zusätzliche Kanäle eines einzigen SSH-Logins; FTP nutzt einen kleinen Session-Pool.
  • Unterbrochene Übertragungen werden an ihrer Abbruchstelle fortgesetzt (SFTP seek, FTP REST/APPE), und eine getrennte Verbindung wird automatisch wiederhergestellt.
  • Zeitstempel bleiben erhalten; optional wird nach jeder Übertragung eine SHA-256-Verifizierung durchgeführt.
  • Konfliktdialog mit Überschreiben, Überspringen, Beide behalten (name_1.ext, fortlaufend nummeriert), Fortsetzen und „Für alle anwenden“ für die aktuelle Aktion.
  • „Vergleichen“ zeigt beide Dateien nebeneinander mit Metadaten im oberen Bereich: Textdateien als Zeilen-Diff, Bilder als Vorschau, Binärdateien als Identisch/Verschieden-Prüfung.
  • „Öffnen mit“: Dateien öffnen sich in dem für ihre Dateiendung gewählten Programm. Das Programm wird einmalig pro Endung abgefragt und gespeichert; die Zuordnung lässt sich unter Einstellungen → Programme anpassen. Das Speichern einer Datei lädt sie wieder hoch – samt Warnung, falls sich die Serverkopie in der Zwischenzeit geändert hat.
  • „Von URL laden“ (Upload-Menü, Ctrl+Shift+L) überträgt eine Datei aus dem Web direkt auf den Server. Der Server lädt die Datei selbst herunter (curl/wget, PowerShell unter Windows) oder sie wird ohne temporäre Datei über den PC gestreamt. Es werden ausschließlich http/https-URLs akzeptiert.
  • Serverseitige Archive über SSH exec für Linux- und Windows-Server: Packen, Entpacken, Hochladen eines Ordners als einzelnes Archiv und Herunterladen als Archiv.
  • Windows-Befehle werden als PowerShell -EncodedCommand übergeben und rufen explizit System32\tar.exe auf, niemals ein GNU-tar aus PATH.
  • Ordnersynchronisierung (Upload, Download oder beide Richtungen, optionales Löschen beim Spiegeln) mit einer Vorschauliste, bevor Änderungen angewendet werden.
  • Weitere Tools: Eigenschaftendialog mit chmod-Editor und Ordnergröße; Duplizieren; Pfad kopieren; neue leere Datei; „Terminal hier öffnen“, das eine integrierte Terminal-Sitzung direkt im betreffenden Ordner startet.
  • Drag & Drop auf die Pfadleiste und den Ordnerbaum: Du kannst Dateien und Ordner auf jedem Pfadsegment (beispielsweise dem übergeordneten Ordner) oder auf einem Ordner im Baum ablegen; das Ziel wird beim Ziehen hervorgehoben. Eingeklappte Ordner im Baum öffnen sich, wenn du mit dem Mauszeiger darauf verweilst. Dieselbe Verschiebeaktion funktioniert im Split-Modus auch auf der lokalen Seite.
  • Rückgängig / Wiederholen (Ctrl+Z, Ctrl+Y / Ctrl+Shift+Z, Symbolleiste und Kontextmenü) für Verschiebungen, Umbenennungen sowie neue Ordner oder leere Dateien. Das Rückgängigmachen eines neuen Ordners oder einer neuen Datei entfernt diese nur, solange sie noch leer sind. Aktionen, die sich nicht mehr rückgängig machen lassen, werden gemeldet und aus dem Verlauf entfernt. Bereiche und Tabs innerhalb eines verschobenen Ordners folgen diesem.
  • Bestätigung vor dem Verschieben per Drag & Drop mit „Nicht erneut nachfragen“. Die Nachfrage kann unter „Einstellungen“ → „Ansicht“ wieder aktiviert werden.
  • Der Server-Ordnerbaum beginnt nun am Pfad der Verbindung oder – falls keiner festgelegt ist – am Anmeldeordner des Kontos statt unter /. Viele Hosting-Konten dürfen / oder /home nicht auflisten, sodass der Verzeichnisbaum nie bis zum eigenen Ordner geöffnet werden konnte. Über eine Einstellung lässt sich der Baum wieder ab / anzeigen.
  • Browser-Einstellungen werden pro Benutzer in zwei neuen verschlüsselten app_settings-Spalten (sftp_browser_enc/_iv) gespeichert, getrennt von der regulären Einstellungsmaske, damit sich beide nicht gegenseitig überschreiben können.
  • Schaltflächen zum Schließen von Tabs werden in den Farben des Designs mit Abstand nach rechts gezeichnet; die weiße Basislinie der Tab-Leiste von Qt ist deaktiviert.
  • Ein Verzeichnisabruf, der erst nach dem Schließen seines Tabs fertiggestellt wird, zeigt keinen „Server connection dropped“-Fehler mehr an.
  • src/ui/sftp_browser.py und src/ui/sftp_worker.py wurden entfernt (ersetzt durch src/filebrowser/).
  • Windows-OpenSSH-Server werden anhand des SSH-Banners ohne Anmeldung erkannt (src/remote_os.py).
  • Der Dateibrowser startet im Home-Verzeichnis des Benutzers und akzeptiert Windows-Pfade (W:\data, src/remote_path.py).
  • SSHFS-Mounts akzeptieren Windows-Unterpfade; das Einbinden von / auf einem Windows-Server bindet den Home-Ordner statt der Laufwerksliste ein, deren Bezeichnungen im C:-Stil vom Explorer nicht angezeigt werden können.
  • Die Systeminfo unterstützt Windows-Server (PowerShell/CIM) und listet angeschlossene Laufwerke samt Belegung auf:
  • Linux: eingehängte Blockgeräte; tmpfs-, Loop-, Netzwerk- und FUSE-Mounts werden übersprungen.
  • Windows: Volumes mit Laufwerksbuchstaben auf einer Festplattenpartition; eingebundene UNC-, SSHFS/WinFsp- und subst-Laufwerke werden übersprungen.
  • USB-Geräte werden als extern gekennzeichnet.
  • Die Linux-Systeminfo liest Arbeitsspeicher und Festplattenplatz als reine KiB-Zahlen aus und formatiert sie selbst, anstatt die lokalisierte Ausgabe von free -h/df -h zu zerlegen.
  • Der Host-Schlüssel wird vor dem SSH-Aufruf für die Systeminfo zu known_hosts hinzugefügt, sodass bei einem erstmalig kontaktierten Host kein Fehler mehr auftritt.
  • Der Dateibrowser lehnte Hosts ab, deren Schlüssel er hätte überprüfen oder erfragen können. Unbekannte Hosts wurden über einen separaten Durchlauf von ssh-keyscan erfasst. Lieferte dieser Durchlauf kein Ergebnis, etwa nach einem Timeout, schlug die Verbindung ohne Nachfrage mit „Host-Schlüssel wurde abgelehnt“ fehl. Der angezeigte Fingerabdruck stammte von dem Schlüssel, den ssh-keyscan als ersten auflistete – nicht zwingend von dem Schlüssel, dem dann vertraut wurde. Die Nachfrage zeigt nun den Fingerabdruck des Schlüssels, den der Server bei der Verbindung tatsächlich vorgelegt hat.
  • Jeder für den Host in known_hosts hinterlegte Schlüsseltyp wird bei der Aushandlung bevorzugt. Die interne Prüfung von paramiko bevorzugt lediglich den ersten gespeicherten Typ und schlägt fehl, wenn der Server einen anderen wählt.
  • Ein geänderter Schlüssel wird mit einer ausdrücklichen Warnung zurückgewiesen, die den Pfad zur Datei known_hosts nennt.
  • Neue Einträge werden mit LF-Zeilenumbrüchen in einer eigenen Zeile geschrieben.
  • Pro ist in der Benutzeroberfläche deaktiviert: SHOW_PRO_UI = False blendet den Lizenzbereich in den Einstellungen aus, und FREE_TERMINAL_SESSION_LIMIT = None hebt das Limit von drei Sitzungen im integrierten Terminal auf (beides in src/pro_manager.py). Die Aktivierung, die Lizenzprüfung und die Tabelle pro_licenses bleiben unverändert, sodass sich beides dort wieder aktivieren lässt. Das Öffnen der Einstellungen führt die Lizenzprüfung nicht mehr aus (diese fragt wmic ab).
  • Die Telemetrie sendet bei jedem Ereignis einen language-Query-Parameter (i18n.current_language(): en, de, es, ru, nl oder ar) mit. Der Statistik-Server speichert ihn in einer neuen Spalte events.language, die bestehenden Datenbanken automatisch hinzugefügt wird; Werte, die keinem Sprachcode entsprechen, werden leer gespeichert statt verworfen.
  • Der Telemetrie-Zustimmungsdialog ist nun in alle sechs Sprachen übersetzt (zuvor nur Deutsch) und listet, genau wie der Hinweis in den Einstellungen, alle übertragenen Daten auf: Zähler für Installationen, Logins und Updates sowie App-Version und Oberflächensprache.
  • „Über“-Fenster: Website des Autors https://www.gregorkrebs.dev; der Dokumentationslink lautet bei deutscher Benutzeroberfläche /de/docs/erste-schritte und ansonsten /en/docs/getting-started (docs_url()). Der Eintrag „Weitere Mitwirkende“ und der zweite Autorenlink wurden entfernt.
  • Die Statuszeile im Verbindungsbereich funktioniert nun wie folgt:
  • Die grüne „Verbunden“-Pille und der grüne Ordner öffnen das eingebundene Laufwerk im Explorer.
  • Der Ordner wird immer angezeigt: grau im getrennten Zustand, wobei ein Klick die Verbindung einbindet.
  • Ein zweiter, dauerhaft sichtbarer Ordner mit der Aufschrift „FTP“ öffnet den Dateibrowser.
  • Der Strich zum Trennen ist rot – sowohl in der Liste als auch im Kopfbereich des Verbindungsfelds.
  • Die Systeminfo zeigt hinter dem Lade-Popup keinen „Lade…“-Text mehr an.
  • Die App sperrte sich beim Start aus ihrem eigenen Datenordner aus und stürzte daraufhin bei jedem Startversuch ab (GitHub-Issue #22, betrifft 1.4.0–1.5.5). Das in 1.4.0 eingeführte CWE-732-ACL-Hardening ersetzte die DACL für %APPDATA%\SSHWinManager und data.db durch einen einzelnen ACE, der dem Eigentümer FILE_GENERIC_READ | FILE_GENERIC_WRITE gewährte – eine Maske, in der FILE_TRAVERSE, DELETE und WRITE_DAC fehlen und die SYSTEM sowie Administratoren vollständig entfernte. Ohne FILE_TRAVERSE lässt sich auf Systemen, die SeChangeNotifyPrivilege („Auslassen der遍历prüfung“) nicht erteilen – was durch Sicherheitsrichtlinien gehärtete Windows-10-Systeme routinemäßig verweigern –, nichts innerhalb des Ordners öffnen: Der Start schlug mit GetFileSecurity: Access denied (1.5.2) oder sqlite3.OperationalError: unable to open database file (1.5.3–1.5.5) fehl. Ohne WRITE_DAC konnte der nächste Start dies nicht rückgängig machen, und da die App dieselbe ACL bei jedem Start erneut anwandte, half ein manuelles icacls /reset nur bis zum nächsten Aufruf. Das Entfernen der Administratoren führte dazu, dass auch das Ausführen als Administrator nichts ausrichtete. Der Eigentümer-ACE gewährt nun Vollzugriff (inklusive SYSTEM – dieses kann ohnehin den Besitz an jeder Datei übernehmen, ein Ausschluss brachte also keinen Sicherheitsgewinn), Verzeichnis-ACEs sind vererbbar, und ein Hardening, das der App den Zugriff auf die eigenen Daten entziehen würde, wird erkannt und zurückgerollt statt gespeichert. Andere Benutzer auf dem System haben nach wie vor keinen Zugriff auf die Anmeldedaten-Datenbank.
  • Die Berechtigungsreparatur konnte Berechtigungen nicht reparieren. repair_owner() schrieb stets nur das Eigentümer-Feld neu, nie jedoch die DACL, und hatte daher keine Auswirkung auf den oben beschriebenen Fehler – daher die Beobachtung im Fehlerbericht, dass die App abstürzt, egal ob man auf „Ja“ oder „Nein“ klickt. Nun wird auch die DACL zurückgesetzt. Die Startprüfung prüft außerdem direkt, ob der Ordner tatsächlich nutzbar ist, anstatt dies nur aus dem Eigentümer-Feld abzuleiten, und repariert im laufenden Prozess, was möglich ist: Das Neuschreiben einer DACL erfordert lediglich WRITE_DAC, welches der Eigentümer stets implizit besitzt. Der Regelfall wird somit stillschweigend ohne UAC-Abfrage und ganz ohne Dialog behoben.
  • Eine mit erhöhten Rechten ausgeführte Reparatur konnte den Datenordner dem falschen Benutzerkonto zuweisen. Wurde die UAC-Abfrage mit den Anmeldedaten eines anderen Administrators bestätigt, übernahm der Hilfsprozess mit erhöhten Rechten den Besitz für diesen Administrator, da er %USERNAME% aus seiner eigenen Umgebung auslas. Die SID des Benutzers wird nun explizit an den Hilfsprozess übergeben (--repair-permissions "<paths>" "<sid>").
  • Die SID des aktuellen Benutzers wird nun aus dem Prozesstoken ausgelesen, anstatt über %USERNAME% ermittelt zu werden. Die Umgebungsvariable wird von dem Prozess geerbt, der die App gestartet hat, und kann auf ein anderes Konto verweisen (umbenanntes Konto, gleichnamiges Domänenkonto, runas, geplante Aufgabe) – das Schreiben einer reinen Eigentümer-DACL für die falsche SID führt letztlich zur dauerhaften Aussperrung.
  • Kann ein Datenordner auch nach der Reparatur nicht geöffnet werden, erklärt die App nun das Problem, nennt den Ordnerpfad und gibt die passenden takeown/icacls-Befehle zur Fehlerbehebung an, anstatt mit einem Stacktrace in crash_report.txt abzustürzen.
  • Wird der Dateibrowser für eine Verbindung erneut geöffnet, deren erster Versuch fehlschlug, wird nun die Verbindung erneut versucht, anstatt nur das alte Fenster in den Vordergrund zu holen.
Datei Größe
NeoSSHWinManager.exe 180.7 MB
NeoSSHWinManager-Setup-1.6.0.exe 211.1 MB
NeoSSHWinManager-cli.exe 30.2 MB
  • CLI-Verlauf: Was über den CLI-Begleiter ausgeführt wurde, ist jetzt in der App sichtbar. Jeder NeoSSHWinManager-cli.exe-Aufruf für eine gespeicherte Verbindung wird aufgezeichnet und kann in der GUI überprüft werden – sowohl --exec-Aufrufe (Befehl, Ausgabe, Exit-Code) als auch interaktive Sitzungen (Vollbild-Transkript). Eine neue Schaltfläche „CLI-Verlauf anzeigen“ in den Verbindungsdetails öffnet ein spezielles Bedienfeld (src/ui/cli_history_panel.py), in dem die neuesten Einträge zuerst aufgeführt werden – ein Sitzungs-/Befehlsabzeichen, ein Zeitstempel (Start–Ende für Sitzungen), die Befehlszeile und ihr Exit-Code. Die Ausgabe wird reduziert, bis darauf geklickt wird, damit lange Verläufe scannbar bleiben – plus „Als .txt herunterladen“ für den vollständigen Verlauf und „Verlauf löschen“. UI-Strings werden in allen sechs unterstützten Sprachen ausgeliefert.
  • Verlaufseinträge werden in einer neuen verschlüsselten cli_history-Tabelle gespeichert: Befehl und Ausgabe werden mit demselben benutzerspezifischen Schlüssel wie Verbindungskennwörter verschlüsselt, niemals im Klartext geschrieben und sind auf 500 Einträge pro Host (die ältesten werden durch Einfügereihenfolge bereinigt) und 256 KB pro Eintrag begrenzt, um das Datenbankwachstum zu begrenzen. Der CLI-Prozess speichert niemals den Verschlüsselungsschlüssel der GUI-Sitzung, daher übergibt er den Eintrag über die vorhandene benutzerbeschränkte IPC-Pipe an die laufende GUI-Instanz (neue cli_log-Aktion, dieselbe Zugriffsschlüsselprüfung und Ratenbegrenzung pro PID wie cli_connect), die die Verschlüsselung und Speicherung übernimmt.
  • Interaktive Sitzungstranskripte werden so gerendert, wie der Bildschirm tatsächlich aussah, und nicht als roher Bytestream ausgegeben: Rücktaste und ENTF löschen jetzt das Zeichen links, anstatt nach einem Tippfehler \x08-Wurf im Protokoll zu belassen, und ein bloßer Wagenrücklauf positioniert den Cursor neu, anstatt als neue Zeile behandelt zu werden – Fortschrittsbalken (pip, apt, curl, docker pull, npm) zeigen also ihren Endzustand an, anstatt eine Zeile pro Neuzeichnung. ANSI/VT100-Escape-Sequenzen werden entfernt. Die Aufzeichnung erfolgt ausschließlich nach bestem Wissen und Gewissen und ist vollständig ausnahmslos. Es kann niemals Auswirkungen auf die SSH-Sitzung, ihren Exit-Code oder ihre Laufzeit haben.
  • NEOSSH_EXEC_TIMEOUT (Sekunden) legt ein optionales Zeitlimit für --exec fest; nicht gesetzt bedeutet keine Begrenzung.
  • SSHFS-Laufwerke verschwinden nicht mehr, weil ihr lang laufender Prozess verloren geht oder in GUI-eigenen Debug-Pipes blockiert wird. Mounts werden jetzt im Vordergrundmodus mit übergeordneten Standardhandles ausgeführt, behalten ihr Prozesshandle und erfordern einen freien Laufwerksbuchstaben, der stabil verfügbar wird.
  • Disconnect findet jetzt den genauen SSHFS-Prozess über die gebündelte psutil-Abhängigkeit anstelle des veralteten WMIC-Befehls, behandelt ein bereits fehlendes Laufwerk als Erfolg und bricht veraltete Explorer-Label-Updates ab, die zu Ghost-Drive-Einträgen führen könnten.
  • Das CLI-Tool wurde immer mit Code 0 beendet, auch wenn nichts funktionierte. launch_ssh_in_current_terminal() gab nichts zurück und cli_main.py meldete bedingungslosen Erfolg, sodass eine fehlgeschlagene Verbindung, ein abgelehnter Hostschlüssel oder eine fehlgeschlagene Authentifizierung nicht von einer erfolgreichen Ausführung zu unterscheiden war – Skripte, die die CLI aufrufen, konnten einen Fehler überhaupt nicht erkennen. Die Funktion gibt jetzt einen Exit-Code zurück und --exec gibt den Exit-Status des Remote-Befehls weiter (über recv_exit_status()), anstatt ihn zu verwerfen.
  • Die Ausgabe von --exec ging verloren, wenn der Aufrufer stdout umleitete. Die Ausgabe wurde über WriteFile in den Bildschirmpuffer der CONOUT$-Konsole geschrieben, was nicht die Standardausgabe des Prozesses ist: NeoSSHWinManager-cli.exe --connect-cli … --exec "…" > out.txt hat einen Erfolg gemeldet und eine leere Datei erstellt. Der nicht interaktive Modus schreibt jetzt ausschließlich in die realen Prozessströme, und der interaktive Pfad greift auf diese zurück, wenn kein gültiges Konsolenhandle vorhanden ist, anstatt ins Leere zu schreiben.
  • --exec wurde nach 30 Sekunden abgebrochen. Das hartcodierte Timeout war zu kurz für wesentliche Dinge (Testläufe, NPM-Installation, Backups) und unterbrach die Ausführung mitten im Befehl. ssh selbst legt keine solche Grenze fest. Es gibt kein Standardlimit mehr – siehe NEOSSH_EXEC_TIMEOUT oben.
  • --exec-Statusmeldungen („Verbinden mit …“) gingen an stdout und kontaminierten die Befehlsausgabe, die von Skripten analysiert wird; Sie gehen jetzt zu stderr und überlassen stdout allein dem Remote-Befehl. Ausführungsfehler mit einem leeren str(e) – häufig bei socket.timeout – führen nicht mehr zu einem bloßen „Fehler beim Ausführen des Befehls:“ ohne Ursache, und ein Timeout sagt dies jetzt explizit und zeigt auf NEOSSH_EXEC_TIMEOUT.
  • Der IPC-Listener hat alle Anfragen, die größer als 64 KB sind, stillschweigend verworfen. Ein einzelnes ReadFile für eine Nachrichtenmodus-Pipe signalisiert eine übergroße Nachricht mit ERROR_MORE_DATA und nicht mit einem Fehler, sodass die GUI lediglich sah, dass eine abgeschnittene Nutzlast nicht analysiert werden konnte, und überhaupt keine Anfrage verarbeitete. Der Listener leert nun die gesamte Nachricht (mit einer Obergrenze von 2 MB) und die Pipe-Puffer wurden auf 1 MB erhöht – erforderlich für cli_log-Einträge mit Befehlsausgaben und ein latenter Fehler für jede zukünftige große Anfrage.
Datei Größe
NeoSSHWinManager.exe 180.7 MB
NeoSSHWinManager-Setup-1.5.5.exe 210.5 MB
NeoSSHWinManager-cli.exe 29.7 MB
  • Die Nutzung der Update-Funktion ist nun Teil der Opt-In-Telemetrie. Benutzer, die der Telemetrie zugestimmt haben, übermitteln zusätzliche Informationen darüber, ob sie die Update-Funktion nutzen, wie sie darauf zugreifen und ob tatsächlich ein Update durchgeführt wurde: update_check (mit source=startup|settings und result=available|uptodate|failed), update_action (welcher Button gedrückt wurde: Download, Browser, Later, Install Now, Enable/Disable for next start), update_download (ok|failed) und update_result. Zu jedem Event gehört auch die aktuell laufende Version. Es werden keine neuen personenbezogenen Daten erhoben; Die Ereignisse fungieren als Zähler ohne identifizierende Markierungen und die gesamte Übertragung unterliegt weiterhin der Einstellung telemetry_enabled.
  • Ob ein Update tatsächlich erfolgreich war, kann im laufenden Prozess nicht festgestellt werden: Der Installer gibt keine Rückmeldung und führt die Installation erst nach dem Beenden der Anwendung durch. Daher erstellt launch_pending_installer() neben der Markierung für ausstehende Updates eine Datei mit dem Namen update_attempt.json. Beim nächsten Start wird die laufende Version mit der aufgezeichneten Zielversion verglichen: Das Ergebnis ist installed, wenn sie übereinstimmen, und not_installed, wenn die Installation abgebrochen wurde oder fehlgeschlagen ist. Einträge, die älter als eine Woche sind, werden ohne Analyse verworfen und nicht für den falschen Tag in die Statistik aufgenommen.
  • Das automatische Update wird jetzt über das Windows-Installationsprogramm installiert, anstatt die Exe-Datei auszutauschen. Die Update-Überprüfung lädt die Setup.exe der Version (nie wieder die tragbare Exe) in %APPDATA%\SSHWinManager\updates herunter und speichert sie in pending_update.json. Wenn das Update aktiviert ist, übergibt der nächste Programmstart an ein Hilfsskript, das auf das Beenden der App wartet, das Installationsprogramm ausführt und die App anschließend erneut startet – unabhängig davon, ob das Installationsprogramm abgeschlossen oder abgebrochen wurde. Dadurch wird sichergestellt, dass das Update tatsächlich angewendet wird und die Registrierungseinträge, Verknüpfungen und Deinstallationsinformationen der installierten Kopie synchron bleiben.
  • Versionen enthalten jetzt ein sha256sums.txt-Asset, sodass die SHA-256-Überprüfung, die der Updater immer versucht hat, tatsächlich ausgeführt wird – ein heruntergeladenes Installationsprogramm, dessen Hash nicht übereinstimmt, wird verworfen statt installiert.
  • Der Update-Dialog bietet nun „Update beim nächsten Programmstart installieren“ (eine jederzeit umschaltbare Checkbox) und „Jetzt neu starten und installieren“ an. Eine laufende Update-Prüfung meldet auch ein Installationsprogramm, das bereits zuvor heruntergeladen wurde, sodass ein abgelehntes Update später ohne erneuten Download aktiviert werden kann – auch wenn die App offline ist und die GitHub-Prüfung fehlschlägt.
  • Die automatische Aktualisierung hat im Stillen nichts bewirkt; Die alte Version startete immer wieder. Die Einstellungsbildschirme riefen sofort nach Abschluss des Downloads install_on_exit() auf, nicht beim Beenden: Das generierte Batch-Skript wartete 3 Sekunden und versuchte dann, die laufende ausführbare Datei zu löschen, was Windows ablehnte. Auch der anschließende Umzug schlug fehl, sodass die alte Exe einfach neu gestartet wurde. Jeder Schritt wurde deaktiviert und seine Ausgabe verworfen, sodass nichts protokolliert oder angezeigt wurde. Darüber hinaus befindet sich eine installierte Kopie normalerweise in einem Verzeichnis, in das der Benutzer überhaupt nicht schreiben darf, und die Pfadvalidierung wird verwendet, um völlig normale Pfade (alles, was (, ) oder ~ enthält, z. B. C:\Programme (x86)\…) ohne für den Benutzer sichtbare Fehler abzulehnen. Der gesamte Exe-Swap-Mechanismus ist weg – siehe oben.
  • Bei der Update-Prüfung wurde das portable Release-Asset NeoSSHWinManager.exe ausgewählt, sodass selbst bei einem erfolgreichen Austausch eine installierte Kopie übrig blieb, die unter der alten Version registriert war. Es sucht nun nach dem Setup-Asset und greift auf die Release-Seite im Browser zurück, wenn ein Release keines bereitstellt.
Datei Größe
NeoSSHWinManager.exe 180.5 MB
NeoSSHWinManager-Setup-1.5.4.exe 210.1 MB
NeoSSHWinManager-cli.exe 29.5 MB
  • Startabsturz bei defekten/verwaisten ACLs: _set_secure_permissions() stürzt die App nicht mehr ab, wenn die DACL selbst nicht gelesen werden kann (z. B. übrig gebliebene defekte Berechtigungen aus einer älteren Installation) – wird stattdessen zu einer protokollierten Warnung degradiert, die dem Verhalten des Schreibschritts entspricht.
  • Die Pro-Aktivierung schlug immer mit einem Netzwerkfehler fehl: Der Validierungsendpunkt zeigte auf die Apex-Domäne, die auf www umleitet. und lässt dabei den POST-Körper stillschweigend fallen. Jetzt zeigt auf www. direkt.
Datei Größe
NeoSSHWinManager.exe 180.5 MB
NeoSSHWinManager-Setup-1.5.2.exe 210 MB
NeoSSHWinManager-cli.exe 29.5 MB
  • Windows-Installationsprogramm (installer/NeoSSHWinManager.iss, erstellt mit Inno Setup 6): eine richtige Setup.exe neben den vorhandenen eigenständigen ausführbaren Dateien, mit einem Setup-Assistenten, der eine Desktop-Verknüpfung und „Start mit Windows“-Aufgaben bietet, einer optionalen CLI-Komponente (NeoSSHWinManager-cli.exe kann über eine Kompaktinstallation ausgeschlossen werden) und einer Seite mit App-Einstellungen, um vor dem ersten Start die Sprache und das Dunkel-/Hell-Design der Anwendung vorab auszuwählen. Die eigene Benutzeroberfläche des Installers ist in Englisch, Deutsch, Spanisch, Russisch und Niederländisch verfügbar. Im Assistenten ausgewählte Einstellungen werden in install_prefs.json geschrieben und von AuthManager.register() angewendet, wenn das erste lokale Benutzerkonto erstellt wird, anstelle der fest codierten en/dark-Standardeinstellungen.
  • Ausführbare CLI-Begleitdatei wiederhergestellt: NeoSSHWinManager-cli.exe (Konsolensubsystem, cli_main.py) ist wieder im Build (NeoSSHWinManager-cli.spec, build_dual.ps1), nachdem es in 1.5.1 aus der Distribution entfernt wurde. Ermöglicht den nicht-interaktiven Zugriff auf eine gespeicherte Verbindung mit aktiviertem CLI-Zugriff über NeoSSHWinManager-cli.exe --connect-cli ACCESS_KEY [--exec "command"], während die Haupt-GUI ausgeführt und angemeldet ist. Der eigene Build der GUI bleibt eine eigenständige ausführbare One-File-Datei, die davon nicht betroffen ist.
  • FTP- und FTPS-Unterstützung: Verbindungen übertragen jetzt ein Protokoll (SFTP / FTPS / FTP). Der Dateibrowser spricht alle drei – die neue src/ftp_client.py implementiert FTP über ftplib mit explizitem TLS (AUTH TLS, Port 21), implizitem TLS (Port 990) und einfachem unverschlüsseltem FTP, MLSD-Auflistungen mit einem LIST-Fallback für ältere Server, passivem/aktivem Modus, Fortschrittsberichten bei Up- und Downloads und automatischer Neuanmeldung nach einer Leerlauf-Zeitüberschreitung.
  • Das Formular „Hinzufügen/Bearbeiten“ verfügt über eine Protokollauswahl sowie FTP-Optionen (implizites TLS, passiver Modus, Zertifikatsüberprüfung); Der Port folgt dem Protokollstandard (22/21/990), sofern kein benutzerdefinierter Port eingegeben wurde und nur SSH-Felder (Schlüsseldatei, Laufwerksbuchstabe, CLI-Zugriff, PuTTY-Schlüssel) für FTP-Verbindungen ausgeblendet sind.
  • Einfache FTP-Verbindungen können über das Kontextmenü der Karte an den integrierten Windows Explorer-FTP-Client übergeben werden (das Passwort bleibt aus der URL entfernt – Explorer fragt danach).
  • FTP/FTPS-Verbindungen können nicht als Laufwerk gemountet werden und haben kein SSH-Terminal: Ihre Karte zeigt ein Protokoll-Badge an und öffnet den Dateibrowser, und Mount-/Terminal-/Systeminfo-Aktionen melden, dass sie nicht verfügbar sind, anstatt später fehlzuschlagen.
  • Datenbankmigrationen führen jetzt jede ALTER TABLE unabhängig aus, sodass eine Spalte, die SQLite ablehnt (z. B. das Hinzufügen einer UNIQUE-Spalte zu einer alten Tabelle), nicht mehr stillschweigend jede darauf folgende Migration überspringt.
  • SSHFS-Schreibbeschädigung: Dateien könnten nach dem Schreiben/Überschreiben über ein bereitgestelltes Laufwerk als reine NUL-Bytes enden. Verursacht durch FileInfoTimeout=-1, wodurch das Zurückschreiben-Dateidaten-Caching von WinFsp aktiviert wird; Eine hart beendete sshfs.exe (z. B. beim Unmounten) könnte noch nicht geleerte Seiten löschen und die serverseitige Nullfüllung beibehalten. Mounts verwenden jetzt stattdessen ein endliches FileInfoTimeout, synchrone SFTP-Schreibvorgänge (sshfs_sync) und deaktiviertes Vorauslesen (no_readahead).
  • Neue Ordner/Dateien sind bis zur Aktualisierung unsichtbar: sshfs.exe verfügt über einen eigenen Verzeichniseintragscache (dir_cache/dcache_dir_timeout, Standard 20 Sekunden), der vollständig von den WinFsp-seitigen Cache-Timeouts getrennt ist und darunter liegt, die diese App bereits festlegt, sodass die vorhandene Einstellung „Verzeichniscache deaktivieren“ nie vollständig angewendet wird. Mounts optimieren jetzt auch den sshfs-seitigen Cache (vollständig deaktiviert, wenn diese Einstellung aktiviert ist, andernfalls verschärft, um mit der Einstellung übereinzustimmen).
  • „Neuer Ordner“/neue Datei wurde stillschweigend viermal im Explorer dupliziert: Auf einem gemounteten Laufwerk konnte das Erstellen eines Elements im Windows Explorer scheinbar fehlschlagen (keine Aufforderung zum Umbenennen) und dann nach einer manuellen Aktualisierung bis zu viermal angezeigt werden. Die Hauptursache ist eine Nichtübereinstimmung des Upstream-WinFsp/Windows-Sicherheitstokens (TokenUser vs. TokenOwner), die sich nur auf das integrierte Administratorkonto auswirkt, wenn der UAC-Administratorgenehmigungsmodus dafür deaktiviert ist (Windows-Standardeinstellung für dieses Konto) – nicht über die Bereitstellungsoptionen der App behebbar. Dokumentiert für alle anderen, die darauf zugreifen: Aktivieren Sie „Benutzerkontensteuerung: Administratorgenehmigungsmodus für das integrierte Administratorkonto“ (secpol.msc oder FilterAdministratorToken=1) und melden Sie sich erneut an.
  • Startabsturz nach Behebung des oben genannten Konto-Token-Problems: Dateien, die zuvor unter dem betroffenen Konto erstellt wurden, gehören letztendlich der Gruppe BUILTIN\Administrators und nicht dem Benutzer; Sobald das Token dieses Kontos die Gruppe nicht mehr trägt, begann die eigene Berechtigungshärtung der App (SetFileSecurity) zu scheitern, der Zugriff wurde verweigert und der Start stürzte ab. Bei diesem Aufruf handelt es sich jetzt um einen Best-Effort-Aufruf (protokolliert eine Warnung statt eines Absturzes), und die App erkennt nun genau diese Eigentumskonflikte beim Start selbstständig und bietet eine einmalige, UAC-erweiterte automatische Reparatur (src/permission_repair.py) an – sodass jeder, der nach einem Update oder einer Neuinstallation darauf stößt, eine geführte Fehlerbehebung anstelle eines Absturzes erhält.
  • Der CLI-Zugriffsschlüssel konnte für keine Verbindung übereinstimmen: get_by_cli_key() verschlüsselte den eingehenden Schlüssel erneut mit einem neuen zufälligen AES-GCM-IV und verglich das Ergebnis mit dem gespeicherten Chiffretext – der einen anderen zufälligen IV als bei der ursprünglichen Speicherung des Schlüssels verwendet, sodass der Vergleich selbst für den richtigen Schlüssel nie erfolgreich sein konnte. Lookup verwendet jetzt stattdessen einen deterministischen cli_access_key_hash (SHA-256 des Klartextschlüssels); Bei bestehenden Verbindungen wird dieser Hash bei der nächsten Anmeldung automatisch aufgefüllt.
  • CLI-SSH-Verbindungen wurden immer abgelehnt: launch_ssh_in_current_terminal() (verwendet von --connect-cli) legte eine RejectPolicy-Hostschlüsselrichtlinie fest, lud jedoch nie zuerst known_hosts in paramiko, sodass jede Verbindung als „unbekannter Host“ abgelehnt wurde, unabhängig davon, was auf der Festplatte bereits vertrauenswürdig war. Lädt nun dieselbe known_hosts-Datei, die der Rest der App verwendet, bevor die Richtlinie überprüft wird.
  • Das eingebettete Terminal hat das gesamte Fenster beim Herstellen der Verbindung eingefroren: Öffnen einer SSH-Sitzung im integrierten xterm.js-Terminal (terminal_client-Einstellung = „xterm“) namens TerminalBridgeServer.create_session_token() – das einen blockierenden paramiko.SSHClient.connect() ausführt – direkt im Qt-Hauptthread. Ein langsamer oder nicht reagierender Host könnte die gesamte Benutzeroberfläche für die Dauer des Authentifizierungs-Timeouts von Paramiko (standardmäßig 30 Sekunden) zusätzlich zum Verbindungs-Timeout einfrieren. Der Verbindungsaufbau wird jetzt in einem TerminalConnectWorker im Hintergrund (src/ui/worker.py) ausgeführt, der dem vorhandenen MountWorker/UnmountWorker-Muster entspricht. Die Registerkarte wird erst erstellt, wenn die SSH-Sitzung tatsächlich aktiv ist.
  • Der CLI-Zugriff über --connect-cli funktioniert jetzt auch für passwortauthentifizierte Verbindungen: Die lokale IPC-Antwort enthält das Passwort (bisher aufgrund einer früheren Feststellung zurückgehalten). Die Pipe war bereits auf die SID des aktuellen Benutzers beschränkt (_make_pipe_security_attributes), der 64-Byte-Zugriffsschlüssel selbst ist ein starkes Trägergeheimnis und Anfragen sind bereits pro PID ratenbegrenzt – das Senden des Passworts über diesen bereits eingeschränkten Kanal war das fehlende Teil für eine CLI-Funktion, deren einziger Zweck der unbeaufsichtigte Zugriff auf gespeicherte Verbindungen ist und nicht eine zusätzliche Gefährdung.
Datei Größe
NeoSSHWinManager.exe 180.5 MB
NeoSSHWinManager-Setup-1.5.2.exe 210 MB
NeoSSHWinManager-cli.exe 29.5 MB
  • Integriertes In-App-Terminal: Neues xterm.js-basiertes SSH-Terminal, das direkt in die App eingebettet ist (über QWebEngineView/QWebChannel, überbrückt mit einem lokalen WebSocket-Server), auswählbar in den Einstellungen neben den vorhandenen externen SSH/PuTTY-Launchern. Unterstützt mehrere gleichzeitige Sitzungen pro Verbindung mit einer Registerkartenleiste, Hintergrundpersistenz beim Wechseln von Bedienfeldern und einer Schaltfläche zum erneuten Verbinden nach der Trennung.
  • Nativer SFTP-Browser: Neues Dateibrowserfenster (src/ui/sftp_browser.py), das über die Verbindungskarte erreichbar ist, sobald ein Host gemountet ist – Verzeichnisnavigation, Upload/Download mit Fortschritt, Umbenennen, Löschen und Neuer Ordner, alles wird über dedizierte Worker-Threads vom UI-Thread ausgeführt.
  • Pro-Lizenzsystem: Maschinenbasierte Aktivierung (src/pro_manager.py) mit einer offline, HMAC-verifizierten Lizenzprüfung und einem neuen Abschnitt „Pro-Lizenz“ in den Einstellungen. Das kostenlose Kontingent ist auf drei gleichzeitige Sitzungen mit integriertem Terminal begrenzt. Bei Überschreitung wird eine Upgrade-Eingabeaufforderung angezeigt.
  • Verbindungsvorlagen und Erkennung doppelter Namen: Das Dialogfeld „Hinzufügen/Bearbeiten“ verfügt über ein Vorlagen-Dropdown-Menü (Speichern/Anwenden/Löschen) und blockiert jetzt doppelte Verbindungs-/Vorlagennamen, indem automatisch eine eindeutige Alternative vorgeschlagen wird.
  • Kontextmenü der Verbindungskarte: Klicken Sie mit der rechten Maustaste auf das Menü zum Mounten/Unmounten, öffnen Sie es im Explorer, öffnen Sie den SFTP-Browser und stellen Sie eine Verbindung über OpenSSH/PuTTY/integriertes Terminal her.
  • Bestätigungsdialog zum Abmelden: Wählen Sie zwischen angemeldet bleiben, beenden, während die Laufwerke gemountet bleiben, oder beenden und alles aushängen.
  • Prüfung der Startvoraussetzungen: Blockiert den Start mit Download-Links, wenn WinFsp und/oder SSHFS-Win nicht installiert sind.
  • Einstellungen: Neuer Terminal-Backend-Selektor (SSH/PuTTY/integriertes xterm) und ein Schalter zum Deaktivieren des SSHFS-Attribut-/Verzeichnis-Cachings für Hosts, bei denen veraltete Cache-Daten ein Problem darstellen.
  • Neuer Release-Build-Workflow von GitHub Actions und ein nächtliches Versions-/Push-Hilfsskript für den Release-Prozess.
  • Die SSH-Schaltfläche der Verbindungskarte öffnet jetzt das integrierte Terminal, wenn dieses Backend in den Einstellungen ausgewählt wird, und greift andernfalls auf den externen Client zurück; „Open Mounted Path“ öffnet jetzt den neuen SFTP-Browser anstelle des Systemdatei-Explorers direkt.
  • Neugestaltung der Titelleiste mit einem einheitlichen Erscheinungsbild, passend zum ausgewählten Dunkel/Hell-Thema; Akzentfarbe appweit aktualisiert (#00b4d8 → #0077b6).
  • SSHFS-Mounts legen jetzt explizite WinFsp-Attribut-/Verzeichnis-/Volume-Info-Cache-Timeouts fest (die bei deaktiviertem Caching weiter verschärft werden) und das Aufheben der Bereitstellung führt dazu, dass ein hängengebliebener sshfs.exe-Prozess nach einer Kulanzfrist von 10 Sekunden zwangsweise beendet wird.
  • Die passwortbasierte SSH_ASKPASS-Härtung (einmaliges IPC-Token anstelle einer Klartext-Umgebungsvariable) gilt jetzt ab Sicherheitsstufe 1, anstatt Stufe 2 zu erfordern, sowohl für den nativen SSH-Launcher als auch für PuTTY.
  • „Beenden“ in der Taskleiste durchläuft jetzt denselben Bestätigungsablauf für die Mount-Bereinigung/Abmeldung wie das Hauptfenster, anstatt QApplication.quit() direkt aufzurufen.
  • Die Handhabung des rahmenlosen Fenstergrößenänderungscursors funktioniert jetzt ordnungsgemäß, wenn sich die Maus über untergeordneten Widgets und nicht nur über dem Fensterrahmen selbst befindet.
  • Build: Ausführbare CLI-Begleitdatei aus build_dual.ps1 entfernt (zukünftig nur GUI-Verteilung); Der PyInstaller-Build entfernt jetzt Symbole und schließt nicht verwendete stdlib-Module (tkinter, unittest, pytest usw.) aus, um die Größe der ausführbaren Datei zu reduzieren.
  • get_user_by_username wählt nicht mehr sensible Spalten (Passwort-Hash/Salt, verschlüsselter Schlüssel) aus, die es nicht benötigt, wodurch die versehentliche Offenlegung von Anmeldedaten im Speicher reduziert wird.
  • Nur-Administrator-Kontovorgänge (Zurücksetzen des Passworts, Löschen von Benutzern, Auflisten von Benutzern) erzwingen jetzt die Autorisierung auf der auth_manager-Ebene, anstatt sich ausschließlich auf das Gating auf UI-Ebene zu verlassen.
  • Die Zeitgeber für die Anmeldesperre wurden von monoton auf Wanduhrzeit umgestellt, sodass eine Sperre nicht mehr durch einen Neustart der App umgangen werden kann.
  • Der Updater validiert ausführbare Dateipfade/Update-Dateipfade, bevor er sie in sein Selbstersetzungsskript einbettet, und überprüft nun eine SHA-256-Prüfsumme des heruntergeladenen Updates, bevor er es anwendet (fällt auf eine Warnung zurück, wenn die Version keine Prüfsumme bereitstellt).
  • Telemetrie-Aktionsparameter werden jetzt vor dem Senden URL-codiert, wodurch ein Randfall der Parameterinjektion in der Abfragezeichenfolge geschlossen wird.
  • Terminal- und SFTP-Sitzungen verwenden ablaufende Sitzungstoken zur einmaligen Verwendung, löschen Kennwörter sofort nach der Verwendung aus dem Speicher und binden den lokalen Bridge-Server nur an Loopback; Beide Funktionen verwenden denselben TOFU-Hostschlüssel-Überprüfungs- und Bestätigungsdialog, der an anderer Stelle in der App verwendet wird.
  • Das Pro-Lizenzvalidierungsgeheimnis (neoprovalidate.php) ist aus dem Repository ausgeschlossen.
Datei Größe
NeoSSHWinManager.exe 173.2 MB
  • Verbindungsgruppen/Tags und wiederverwendbare Vorlagen im gesamten Datenmodell, Datenbankmigration, Hinzufügen/Bearbeiten von Abläufen und Übersetzungen
  • Massen-Mount-/Dismount-Aktionen und ein Gruppenfilter im Hauptverbindungsheader
  • Spezielles Profilfenster, in dem Endbenutzer ihr Konto überprüfen und ihr Passwort ändern können
  • Das manuelle GitHub-Update überprüft den Download-Fortschritt und einen Install-on-Exit-Ablauf
  • Telemetrie-Opt-in-Eingabeaufforderung, persistente Telemetrieeinstellungen und asynchrone Telemetrieübermittlung
  • Das Hauptfenster, der Einstellungsbildschirm und die Formulare im rechten Bedienfeld wurden für das Layout der Version 1.5.0 überarbeitet
  • Verbindungskarten zeigen jetzt Gruppeninformationen und kompakte Hostdetails mit dem Laufwerksbuchstaben im Untertitel an
  • Verbindungsflüsse hinzufügen/bearbeiten unterstützen jetzt explizit Vorlagen und Oberflächengruppenmetadaten in der Benutzeroberfläche
  • Viele native Meldungsfelder wurden durch einen themenbezogenen benutzerdefinierten Dialog für Warnungen, Bestätigungen und Erfolgsmeldungen ersetzt
  • Angeheftete Kern-Python-Abhängigkeitsversionen für die Versionsumgebung 1.5.0
  • Die sichtbaren Zeichenfolgen der Anwendungsversion im Hauptfenster wurden aktualisiert, zum Dialog und zum Einzelinstanz-Mutex
  • Reduzierte Debug-Protokollierung sensibler Befehlszeilenargumente im PuTTY-Launcher
  • Gehärtete In-Memory-Verarbeitung von temporären Passwort-Tokens, die von SSH ASKPASS verwendet werden
  • Gehärteter SSH_ASKPASS-Passwortaustausch durch Ersetzen der Klartext-Umgebungsübertragung durch einmalige IPC-Tokens
  • Entspanntere Handhabung des Host-Schlüssels beim ersten Kontakt mit OpenSSH-Akzeptanz für SSH- und Sysinfo-Flows unter Beibehaltung von Host-Änderungsfehlern
  • Die Mindestlänge des Passworts wurde bei Registrierungs- und Benutzerverwaltungsabläufen von 6 auf 8 Zeichen erhöht
  • Eingeschränkte Berechtigungen für Absturzberichtsdateien, sodass Stack-Traces nicht mehr weltweit lesbar sind
  • Maskierte PuTTY-Passwortargumente in Debug-Protokollen, um den Verlust von Anmeldeinformationen zu verhindern
  • Passwort-Fallback hinzugefügt, wenn ein gespeicherter SSH-Schlüssel fehlschlägt, aber noch ein Passwort für dieselbe Verbindung verfügbar ist
  • Einheitliche destruktive Bestätigungsaufforderungen und Handhabung schmutziger Formulare über die gestaltete Dialogebene
  • Mehrere in der 1.5.0-Benutzeroberfläche verwendete deutsche Übersetzungszeichenfolgen und Speicherbezeichnungsschreibweisen wurden korrigiert
Datei Größe
NeoSSHWinManager.exe 46 MB
NeoSSHWinManager-cli.exe 28.2 MB
  • Absturz beim Klicken auf einen gemounteten Host (NameError: conn_id nicht in Infopanel-Lambdas definiert)
  • Die Schaltfläche „Kopieren“ in Fehlerdialogen funktioniert nicht
  • Der Ladestatus wird nicht gelöscht, wenn der Dialog „Passwort fragen“ abgebrochen wird
  • Bearbeitungsmodus: Abschnittsüberschriften im Vergleich zum Infobereich zu fett
  • Bearbeitungsmodus: Passwortpunkte unverhältnismäßig groß
  • Infofeld: Laufwerkskennzeichen durch Ordner-SVG-Symbol ersetzt, nur sichtbar, wenn der Host gemountet ist
  • Der Bearbeitungsmodus stimmt jetzt mit der Feldreihenfolge im Infobereich, der Containerstruktur und den Abschnittsbeschriftungen überein
  • Für visuelle Kontinuität wird oben im Bearbeitungsmodus das Statusabzeichen (angeschlossenes/nicht angeschlossenes Tablet) angezeigt
  • Schaltfläche „Speichern“: Das Diskettensymbol ersetzt das Häkchen
  • Heller Modus: Die Schaltfläche „Speichern“ erhält einen dezenten grünen Hintergrund; Das Löschsymbol ist für einen besseren Kontrast durchgehend rot
Datei Größe
NeoSSHWinManager.exe 45.7 MB
NeoSSHWinManager-cli.exe 27.8 MB
  • Umfassende Sicherheitsüberprüfung: Gehärtete Speicherung von Anmeldeinformationen, Sitzungsverarbeitung, Verschlüsselungsroutinen und Schlüsselableitung für auth_manager, crypto, database, ssh_launcher und sshfs_controller
  • CWE-312 · Verbindungsmetadatenverschlüsselung: Host, Benutzername, Verbindungsname und Remote-Pfad werden jetzt mit AES-256-GCM verschlüsselt, bevor sie in der Datenbank gespeichert werden. Vorhandene Einträge werden beim ersten Login automatisch migriert.
  • CWE-732 · Windows ACL gehärtet: win32security ist jetzt ein harter Import auf Modulebene – eine fehlende pywin32-Installation löst beim Start einen expliziten ImportError aus, anstatt die Datenbankdatei allgemein lesbar zu machen.
  • CWE-307 · Brute-Force-Schutz: Die Anzahl der Anmeldeversuche ist jetzt pro Benutzername begrenzt. Nach 5 aufeinanderfolgenden Fehlern wird das Konto für 30 Sekunden gesperrt; Jeder weitere Block eskaliert (10 Versuche → 10 Minuten, 5 → 1 Stunde und mehr).
  • CWE-362 · Session Race Condition behoben: Session._current_user ist durch einen threading.RLock geschützt; enc_key-Aktualisierungen nach Passwortänderungen werden atomar durchgeführt.
  • CWE-591 · Memory-Lock-Fehler jetzt sichtbar: mlock_memory() / munlock_memory() geben jetzt bei einem Fehler einen WARNUNG-Protokolleintrag aus, anstatt stillschweigend False zurückzugeben.
  • CWE-214 · CLI-Schlüssel über stdin: --connect-cli – liest den Zugriffsschlüssel von stdin und verhindert so die Offenlegung in Prozesslisten und im Shell-Verlauf.
  • CWE-78 · Shell-Injection-Verhinderung: Unsichere Shell-Interpolation im ssh_launcher entfernt; _is_safe_label() im sshfs_controller hinzugefügt. Das SSH-Terminal wird jetzt über cmd.exe + CREATE_NEW_CONSOLE anstelle von Shell=True gestartet.
  • Migration von CLI-Schlüsseln: Klartext-CLI-Zugriffsschlüssel werden bei der ersten Anmeldung nach dem Update automatisch verschlüsselt.
  • SSH_ASKPASS für die Passwortauthentifizierung: Passwörter werden über den SSH_ASKPASS-Mechanismus übergeben – niemals in der Prozessliste angezeigt.
  • Validierung des Verbindungsnamens: Namen, die Shell-Metazeichen enthalten, werden vor dem Einfügen in die Datenbank abgelehnt.
  • MITM Fix (Auslassung in Version 1.3.1 korrigiert): StrictHostKeyChecking=yes wurde bereits in Version 1.3.1 angewendet, aber nicht dokumentiert. Installationen mit Version 1.3.0 oder früher sind anfällig – führen Sie sofort ein Upgrade durch.
  • PuTTY PPK-Integration: Automatische Erkennung und konfigurierbarer PPK-Schlüsselpfad für PuTTY-basierte Verbindungen
  • Verbesserungen des nativen SSH-Terminals: Überarbeitete Terminal-Startlogik für PuTTY und natives OpenSSH
  • SysInfo mit Schlüssel oder Passwort verfügbar: Systeminformationen werden immer dann abgerufen, wenn ein SSH-Schlüssel oder ein gespeichertes Passwort konfiguriert wird – die Einstellung der Sicherheitsstufe sperrt den Sysinfo-Zugriff nicht mehr.
  • SysInfo-Authentifizierungsüberlagerung: Anstelle eines allgemeinen Fehlers wird eine klare Überlagerung angezeigt, wenn weder Schlüssel noch Kennwort konfiguriert sind.
  • Countdown zur Anmeldesperre: Nach einer Sperrung über die Klassengrenze hinweg zeigt das Anmeldeformular einen Live-Countdown mit der für Menschen lesbaren verbleibenden Zeit an.
  • Anmeldeschaltfläche bei Eingabe gesperrt: Die Anmeldeschaltfläche ist deaktiviert, bis sowohl Benutzername als auch Kennwort (jeweils ≥ 1 Zeichen) ausgefüllt sind.
  • Über Dialog Redesign: Kartenlayout mit gruppierten anklickbaren Linkschaltflächen für Projekt-, Dokumentations-, GitHub- und Autorenlinks
  • Schaltfläche „Info“ in der Seitenleiste: Persistente Schaltfläche „Info“ in der Seitenleiste
  • SSHFS-Massentrennungsfehler: Es wurde eine Race-Bedingung in sshfs_controller behoben, die dazu führte, dass alle gemounteten Laufwerke gleichzeitig getrennt wurden
  • Absturz beim Aufheben der Bereitstellung des Laufwerks: Ein Absturz wurde verhindert, wenn die Bereitstellung eines Laufwerks aufgehoben wurde, während die Benutzeroberfläche noch einen Verweis darauf enthielt (#1).
  • QMessageBox Dark Mode: Hintergrundfarbe von Nachrichtenboxen im Dark Mode korrigiert (#3)
  • F2-Absturz bei nicht standardmäßigen Widgets: Absturz beim Drücken von F2 bei nicht standardmäßigen Widgets verhindert (#4)
  • Verhalten beim Scrollen von Formularen: Das Scrollen im Dialogfeld „Verbindung hinzufügen/bearbeiten“ auf kleineren Bildschirmen wurde korrigiert
  • Absturzberichtspfad: Absturzberichte werden jetzt in %APPDATA%\SSHWinManager\crash_report.txt geschrieben
  • Weitergabe von Worker-Thread-Fehlern: Mount-/Unmount-Worker-Threads fangen jetzt Ausnahmen ab und geben einen MountResult-Fehler aus, anstatt stillschweigend abzustürzen
Datei Größe
NeoSSHWinManager.exe 45.7 MB
NeoSSHWinManager-cli.exe 27.9 MB
  • Agent-CLI-Key im Verbindungseditor direkt sichtbar statt maskiert.
  • Zwei sichtbare SVG-Aktionen für CLI-Key eingeführt: kopieren und neu generieren.
  • Copy-Feedback im Editor per Check-Icon ergänzt.
  • Versions- und Website-Metadaten auf 1.3.1 angehoben.
Datei Größe
NeoSSHWinManager.exe 42.9 MB
NeoSSHWinManager-cli.exe 27.8 MB
  • Einstellungen und Benutzerverwaltung als Vollbild-Panel via QStackedWidget
  • Sidebar-Navigation mit Hervorhebung des aktiven Eintrags
  • [i]-Schaltfläche öffnet ausschließlich das SSH-Live-Systeminfo-Panel
  • Bearbeiten-Schaltfläche immer sichtbar, deaktiviert wenn Verbindung eingehängt
  • Primäre Schaltflächen: Verlauf #00b4d8 → #0077b6, schwarzer Text
  • Titelleistenfarbe passt sich dem aktiven Design via DwmSetWindowAttribute (Windows 11+) an
  • Checkbox-Indikator: 14×14 px, weißer Haken auf türkisem Hintergrund
  • Panel-Header: 52 px Höhe, Kicker-Labels entfernt, Titel vertikal zentriert
  • Listenansicht mit 4-px-Farbbalken für CPU/RAM/Festplatte
  • Vollständige statische Website in website/ (Landing, Features, Docs, Changelog, Download)
  • Interaktive Browser-Simulation (website/app.html) in reinem HTML/CSS/JS
  • Keine Installation nötig, direkt über GitHub Pages bereitstellbar
  • Veraltetes credential_store.py entfernt
  • AppUserModelID-Präfix von dennis. auf neo. geändert
  • Versionserhöhung auf 1.3.0
Datei Größe
NeoSSHWinManager.exe 42.9 MB
NeoSSHWinManager-cli.exe 27.8 MB
  • Fügen Sie dauerhafte Unterstützung für helle/dunkle Designs hinzu.
  • Fügen Sie den Authentifizierungsmodus „Jedes Mal fragen“ für Verbindungen hinzu.
  • Verbessern Sie das Klickverhalten der Verbindungskarte bei der Montage.
  • Anwendungssymbole für Anmelde- und Hauptfenster korrigiert.
  • Aktualisieren Sie die Anwendungs- und Windows-Metadaten auf 1.2.0.
Datei Größe
NeoSSHWinManager.exe 42.7 MB
NeoSSHWinManager-cli.exe 27.7 MB