AmberBeam 0.1: ein Zweifenster-Client für FTP, FTPS und SFTP
Zweifenster-Clients für FTP und SFTP kennt man von Windows: links lokal, rechts der Server, unten die Warteschlange, dazu Funktionstasten für fast alles. Transmit und ForkLift sind gute Programme, aber durch und durch Mac-Programme; die Handgriffe der Windows-Clients fehlen dort. AmberBeam soll diese Lücke füllen – mit der Bedienung der Windows-Clients, aber als Programm für macOS, Windows und Linux.

Was 0.1.0 mitbringt
Das Programm ist in Rust geschrieben, die Oberfläche in Svelte 5, den Rahmen liefert Tauri 2. Übertragen wird per SFTP, FTPS und FTP. FTPS läuft voreingestellt explizit über AUTH TLS, implizit auf Port 990 ist es ebenfalls möglich. Reines FTP bleibt erlaubt, wird aber so lange rot markiert, wie die Verbindung offen ist. Bei FTPS wird auch der Datenkanal verschlüsselt; verweigert der Server eine der beiden Hälften, scheitert die Verbindung und sagt, welche.
Pro Server lässt sich einstellen, wie viele Dateien gleichzeitig übertragen werden: voreingestellt acht bei SFTP und vier bei FTP. Lehnt ein Server die nächste Anmeldung ab, senkt AmberBeam die Zahl selbst und meldet das, statt den Rest der Warteschlange mit Fehlern enden zu lassen. Die Warteschlange übersteht einen Neustart, und eine abgerissene Übertragung wird fortgesetzt – aber nur, wenn die Datei auf dem Server noch dieselbe Größe und dasselbe Alter hat. Hat sie sich geändert, beginnt die Übertragung von vorn, damit keine Datei aus zwei Fassungen entsteht. Bei Namenskonflikten fragt ein Dialog nach, mit der Option „für den Rest genauso“.
Die Serverliste liegt in Ordnern, jeder Eintrag ist eine lesbare JSON-Datei. Passwörter stehen in keiner davon; sie gehen in den Schlüsselbund, die Anmeldeinformationsverwaltung oder den Secret Service. Importieren lassen sich Listen aus FileZilla, WinSCP, Total Commander, OpenSSH und dem Sites.dat- oder .ftp-Export eines älteren Windows-Clients, samt Ordnerstruktur. Der Export ist entweder offen und ohne Passwörter oder mit einer Passphrase verschlossen – eine dritte Form gibt es nicht. Schlüsseldateien funktionieren auch im PuTTY-Format (.ppk, beide Versionen, mit und ohne Passphrase).
Wer auf der Gegenseite sitzt
SSH-Host-Schlüssel werden gegen ~/.ssh/known_hosts geprüft, ein geänderter Schlüssel wird abgelehnt. Zertifikate prüft AmberBeam gegen den Zertifikatsspeicher des Systems und benennt den Fehler, statt ihn zu „Zertifikatsfehler“ zusammenzufassen: selbstsigniert, abgelaufen, noch nicht gültig, falscher Name, widerrufen oder fehlerhafte Signatur. Eine Ausnahme gilt nur für ein Zertifikat auf einem Host und Port.
Was am Anfang fehlte
Mit 0.1.0 gibt es eine eigene Liste „Noch nicht dabei“: kein FXP (Übertragungen zwischen zwei Servern laufen über den eigenen Rechner), kein Verzeichnisvergleich, keine Bearbeitung auf dem Server, keine zeitgesteuerten Aufträge, noch keine Container-Fassung. Außerdem ehrlich vermerkt: Im Alltag genutzt wurde nur macOS. Unter Linux war das Debian-Paket in einem sauberen Debian 12 installiert und geprüft worden, das Fenster selbst aber noch nicht auf einem echten Rechner gesehen, und Windows wurde nur gebaut.
Windows und Linux nachgebessert (0.1.1 bis 0.1.4)
Das zeigte sich bald. In 0.1.1 öffnete sich das Serverfenster unter Windows leer und fror ein. Der Grund war ein Fragezeichen im Pfad (index.html?view=sites), das auf macOS ein normales Zeichen ist und unter Windows nicht. Welche Ansicht ein Fenster zeigt, ergibt sich seitdem aus seinem Label. Dieselbe Version setzte außerdem eine Frist von zwanzig Sekunden für den Verbindungsaufbau, damit ein Server, der die Verbindung annimmt und dann schweigt, nicht ewig abgewartet wird.
Die Erklärung aus 0.1.1 war allerdings nicht die ganze Ursache, und 0.1.2 stellt das richtig: Das Fenster war aus einem synchronen Befehl heraus gebaut worden. Tauri warnt davor, und unter Windows führt es zum Deadlock, weil WebView2 den Hauptthread will, den der Befehl bereits hält. Der Pfad mit Fragezeichen war ein echter Fehler, aber nicht dieser. Zudem waren alle Tastenkürzel außerhalb von macOS unerreichbar, weil sie an Meta gebunden waren – die Windows- bzw. Super-Taste, die das System für sich beansprucht. Seitdem gilt als Befehlstaste Command auf dem Mac und Strg überall sonst. Der Dialog zur Funktionstastenbelegung erscheint nur noch dort, wo das Problem existiert; auf anderen Systemen startet eine neue Installation direkt mit der Belegung der älteren Windows-Clients.
0.1.3 räumt bei der Bedienung auf. Die Schaltfläche „Verbinden“ öffnet jetzt ein Menü mit den gespeicherten Servern (nach Ordnern gruppiert), darunter Schnellverbindung und Serverliste, statt ein Formular zum Eintippen eines Hosts. Das Passwortfeld im Serverdialog ist immer sichtbar; ohne „merken“ wird das Passwort nur im Speicher für diesen Programmlauf gehalten. Und die Update-Prüfung kennt jetzt den Zustand „konnte nicht prüfen“, statt bei einem Netzwerkfehler „aktuell“ zu behaupten.
In 0.1.4 kamen Updates aus dem Programm hinzu. Jede Aktualisierung ist mit einem Schlüssel signiert, der nicht im Repository liegt, und wird abgelehnt, wenn sie nicht passt; das lässt sich nicht abschalten. Wo eine Installation sich nicht selbst ersetzen kann, etwa bei einem Debian-Paket unter /usr, verweist der Dialog auf die Download-Seite. Außerdem neu: eigene Tooltips (der eingebaute zeigt in der verwendeten WebView nichts an), ein Zurücksetzen der Darstellung, die Versionsnummer in der Titelleiste und eine Adresszeile, in die man einen Pfad einfügen kann, ohne dass bei jedem Tastendruck navigiert wird.
0.1.5: Container, Bearbeiten auf dem Server, Papierkorb
Die größte Änderung dieses Abschnitts ist eine Container-Fassung: dasselbe Programm ohne Fenster, das man im Browser bedient. Kern, Befehle und Oberfläche sind dieselben, nur der Weg zwischen Fenster und Kern ändert sich. Gedacht ist es für Übertragungen, die weiterlaufen sollen, wenn der Laptop zugeklappt ist. Es gibt ein einziges Passwort statt Benutzerkonten und kein eigenes TLS – das übernimmt ein Reverse Proxy. Gespeicherte Passwörter liegen in einer mit Passphrase versiegelten Datei, weil es im Container keinen Schlüsselbund gibt; eine falsche Passphrase stoppt das Programm, statt leer zu starten und zu überschreiben, was es nicht lesen konnte. Das Desktop-Programm kann sich auch mit einem solchen Dienst verbinden, dann laufen die Übertragungen dort.
Neu ist außerdem „Remote bearbeiten“: Rechtsklick auf eine Datei auf dem Server, eine Kopie kommt herunter, öffnet sich und geht bei jedem Speichern wieder hinauf. Mir sind die Randfälle wichtig. Eine Datei, die kein Text ist, wird anhand ihrer Bytes abgelehnt, nicht anhand der Endung. Eine Datei, die nicht UTF-8 ist, wird als Latin-1 gelesen und als Latin-1 zurückgeschrieben, damit nicht stillschweigend jeder Umlaut umkodiert wird; Byte-Order-Mark und CR-LF-Zeilenenden bleiben ebenfalls erhalten. Hat sich die Datei auf dem Server zwischenzeitlich verändert, wird vor dem Zurückschreiben gefragt.
Dazu kommen ein Papierkorb pro Server (gelöschte Dateien wandern in ein Verzeichnis eurer Wahl, benannt nach dem Löschzeitpunkt; schlägt das Verschieben fehl, wird nichts gelöscht), die Option, in dem Verzeichnis weiterzumachen, in dem man den Server verlassen hat, gekoppeltes Navigieren in beiden Bereichen, vier Größenstufen für die Oberfläche und eine einmalige Antwort auf die Überschreiben-Frage, die für diese Datei, den Rest des Laufs oder alle künftigen Läufe gelten kann. Unter den Fehlerkorrekturen steht, dass FTP über IPv6 gar nicht übertragen konnte: PASV kennt nur IPv4-Adressen, jetzt wird EPSV verwendet, wo der Server es anbietet. Und ein Server, der TLS verlangt, wurde als falsches Passwort gemeldet.
0.1.6: der Schließen-Knopf
0.1.5 ließ sich nicht über den Schließen-Knopf beenden. Ein Fenster, dessen Seite auf das Close-Ereignis hört, schließt sich nicht von selbst; das Schließen muss die Seite erledigen, und dafür fehlte dem Programm eine Berechtigung. Die Checks steuern Kern, Browser-Hülle und einen echten FTP-Server an, aber kein Desktop-Fenster mit Schließen-Knopf – gefunden wurde der Fehler deshalb durch Benutzen. Gleichzeitig wurde die Frage umgestellt: Sie lautet jetzt, ob beendet werden soll, nicht, ob die Kopien der geöffneten Dateien behalten werden. Behalten wäre ein Versprechen, das der nächste Start bricht, weil Kopien ohne Besitzer beim Start aufgeräumt werden.
Hinweise zur Installation
Alle Versionen sind Vorabversionen. Die macOS-Fassung ist ad-hoc signiert und nicht beglaubigt, es steht kein bezahltes Apple-Konto dahinter; sie läuft nur auf Apple Silicon. Die Installer liegen auf der Releases-Seite. Windows-Installer sind unsigniert, entsprechend meldet sich SmartScreen.
Zum Projekt
-
AmberBeam
Zweifenster-Client für FTP, FTPS und SFTP auf macOS, Windows und Linux: tastaturgeführt, mit Warteschlange, die einen Neustart übersteht, Fortsetzen abgebrochener Übertragungen und Import aus FileZilla, WinSCP und PuTTY.
Unterstützen
Diese Tools entstehen in meiner Freizeit und bleiben kostenlos, offen und cloud-frei. Wenn dir eins davon einen Nachmittag gespart hat, freue ich mich über einen Kaffee oder ein Stück Pizza.
Kaffee oder PizzaWeitere Beiträge
- Rollladen-Steuerung pro Raum: Taster, Fenster, Kälte und Regen Eine Automation pro Raum, die Taster, Fensterkontakt, Kälte, Regen und die Zeit vor Sonnenaufgang zusammenführt. Zwei Merker-Helfer verhindern, dass sich die Auslöser gegenseitig überfahren.
- Stromausfall erkennen und Geräte wiederherstellen in Home Assistant Nach einem Stromausfall booten Lampen und Steckdosen in zufälligen Zuständen. Drei Erkennungswege, ein gemeinsames Script und ein Wiederherstellungsfenster bringen alles wieder in den gewünschten Zustand.
- Rauchmelder löst aus: Alle Rollläden fahren hoch (Home Assistant) Bei Rauchalarm sollen die Rollläden im ganzen Haus hochfahren, damit Fenster als Fluchtweg frei sind. Die Automation ist kurz – aber ein fehlendes „from“ im Trigger entscheidet darüber, ob sie im Ernstfall überhaupt feuert.