
magic-wormhole: Sicherer Dateitransfer per Einmal-Code
Inhaltsverzeichnis
Hallo zusammen,
heute geht es um ein kleines CLI-Tool, das ich in Support- und Incident-Fällen immer wieder gern nutze: magic-wormhole. Es löst ein Problem, das in normalen Firmen häufiger vorkommt als jede fancy “Enterprise”-Story: Du musst jetzt sofort eine Datei (oder ein Verzeichnis) zu jemandem bringen, aber E-Mail ist zu klein, ein Cloud-Link ist politisch oder rechtlich heikel, und “schnell mal einen Port öffnen” ist keine Option.
Freitag, 16:47 Uhr. Ein Betrieb mit rund 60 Mitarbeitenden hat ein akutes Problem: Der zentrale Fileserver ist langsam, die Nutzer melden Timeouts, und der externe IT-Dienstleister bittet um ein Support-Paket mit Logs und einem kleinen Konfig-Auszug. Das Bundle ist knapp 900 MB groß. E-Mail blockiert es, SharePoint ist aus Compliance-Gründen tabu, und irgendein ad-hoc FTP-Server wäre ein Albtraum, den du dir im Jahr 2026 wirklich nicht mehr antun willst.
Genau für solche Momente ist magic-wormhole gemacht: Einmal-Code austauschen, Datei Ende-zu-Ende verschlüsselt übertragen, fertig.
Was ist magic-wormhole?
magic-wormhole ist ein schlankes Tool für ad-hoc Dateiübertragungen zwischen zwei Rechnern. Der Trick ist der sogenannte Wormhole-Code (zum Beispiel 7-koralle-löwe): Beide Seiten geben denselben Code ein, und daraus wird eine Ende-zu-Ende verschlüsselte Verbindung aufgebaut.
Wichtig ist, was magic-wormhole nicht braucht:
- kein Account
- kein Login-Portal
- kein “Upload irgendwohin und Link teilen”
- keine eingehenden Firewall-Regeln
Beide Seiten müssen nur wormhole installiert haben und dürfen ausgehend ins Internet. In der Praxis bedeutet das: Wenn HTTP(S) rausgeht, geht magic-wormhole meistens auch.
Ein Praxisfall aus dem KMU-Alltag
Zurück zu unserem Freitag. Der pragmatische Ablauf sieht dann typischerweise so aus:
- Support-Bundle erstellen (z. B. Logs, Export, ein paar Screenshots).
- Optional einen Hash berechnen, damit man später sicher ist, dass wirklich das richtige Paket angekommen ist.
- Paket per magic-wormhole senden.
- Den Code über einen zweiten Kanal teilen (Telefon, separater Chat, kurz vorlesen).
So könnte das auf der Sender-Seite aussehen:
tar -czf support-bundle.tgz ./logs ./config-export
sha256sum support-bundle.tgz
wormhole send support-bundle.tgz
magic-wormhole zeigt dir dann den Code an. Der Empfänger macht:
wormhole receive
Code eingeben, Download läuft, und danach kann man den Hash vergleichen. In der Realität ist genau diese Kombination aus “schnell” und “trotzdem sauber” für viele kleine und mittlere Unternehmen extrem wertvoll.
So nutze ich es praktisch
Datei von A nach B
Sender:
wormhole send /pfad/zur/datei.zip
Empfänger:
wormhole receive
Der Download landet im aktuellen Verzeichnis. Ich mache mir dafür oft schnell einen Ordner, damit nichts irgendwo zwischen Downloads und Desktop verschwindet:
mkdir -p ~/wormhole-recv && cd ~/wormhole-recv
wormhole receive
Verzeichnisse senden
Wenn es gleich ein ganzer Ordner sein soll:
wormhole send --dir ./support-bundle/
Was passiert im Hintergrund (kurz und ohne Marketing)?
Unter der Haube macht magic-wormhole drei Dinge, die man sonst mühsam selbst bauen müsste: Peers finden, Schlüssel sicher aushandeln, Daten zuverlässig übertragen, auch wenn NAT oder Firewalls nerven.
| Schritt | Was passiert | Wozu das gut ist |
|---|---|---|
| 1. Code | Der Sender erzeugt einen kurzen Einmal-Code. | Einfacher “Shared Secret” für genau diesen Transfer. |
| 2. Rendezvous | Beide Clients melden sich mit dem Code an einem Rendezvous-Server an (standardmäßig die öffentliche “Mailbox”). | Beide Seiten finden sich, ohne dass du Ports öffnen musst. |
| 3. PAKE | Aus dem Code wird per SPAKE2 (PAKE) ein gemeinsamer Schlüssel abgeleitet. | Ende-zu-Ende Schlüssel, ohne klassischen Key-Exchange-Zirkus. |
| 4. Datenpfad | Erst wird eine direkte Verbindung versucht; wenn das nicht klappt, geht es über einen Relay/Transit-Server. | Funktioniert auch hinter NAT und in “normalen” Firmennetzen. |
| 5. E2E-Transfer | Daten werden verschlüsselt und gegen Manipulation abgesichert übertragen. | Relay sieht nur verschlüsselten Traffic. |
Die Kernaussage: Der Rendezvous-/Relay-Teil ist Infrastruktur, aber nicht die Stelle, an der deine Daten im Klartext liegen.
Sicherheit: Stärken, Grenzen und ein paar Regeln
Ich mag an magic-wormhole, dass das Sicherheitsmodell ziemlich ehrlich ist: Es ist Ende-zu-Ende verschlüsselt, aber Identität kommt nicht automatisch mit.
Was du bekommst
- Ende-zu-Ende Verschlüsselung: Inhalt ist zwischen Sender und Empfänger geschützt, auch wenn ein Relay verwendet wird.
- Kurzlebiger Zugriff: Der Code ist für einen Transfer gedacht, nicht als dauerhaftes Passwort.
- Kleine Angriffsfläche: Kein Server, den du härten musst, keine Benutzerverwaltung, kein Web-Frontend.
Wo du aufpassen musst
- Der Code ist das Passwort. Wer den Code hat, ist “dein Peer”. Wenn der Code in einem offenen Ticket landet, ist das ein Problem.
- Kein Audit by default. Für manche Firmen ist das ein Feature, für andere ein No-Go. Wenn du DLP, Freigaben und Nachvollziehbarkeit brauchst, nimm einen offiziellen Kanal.
- Endpoints bleiben die Wahrheit. Ist der Sender kompromittiert, kann er Mist verschicken. Ist der Empfänger kompromittiert, ist die Datei nach dem Empfang halt da.
Praktische Regeln (die wirklich helfen)
- Teile den Code nicht im gleichen Kanal wie den Link zum Ticket oder die Datei-Details. Am besten: Telefon oder separater Chat.
- Rechne bei Logs immer damit, dass Zugangstoken, Hostnames oder personenbezogene Daten drinstehen können. Schick nur, was nötig ist.
- Bei kritischen Artefakten: Hash separat übermitteln und nach dem Empfang prüfen.
Installation (kurz und realistisch)
Auf vielen Systemen geht’s direkt über den Paketmanager:
- Debian/Ubuntu:
sudo apt install magic-wormhole - macOS:
brew install magic-wormhole
Wenn Distro-Pakete veraltet sind, ist pipx oft der sauberste Weg:
pipx install magic-wormhole
pipx ensurepath
Und wenn du gar kein Python willst (minimaler Server, Container, Rescue-Umgebung): wormhole-william ist ein kompatibler Go-Port als Single-Binary.
Automatisierung und eigene Infrastruktur
Für kontrollierte Abläufe kann man magic-wormhole auch skriptbar nutzen:
CODE="5-alpaka-orbit"
wormhole send --code "$CODE" /pfad/db.dump
Empfänger:
wormhole receive --code "$CODE" --accept-file
Das ist praktisch, aber ab hier gilt wieder: Ein fest verdrahteter Code ist ein Credential. Wenn du automatisierst, dann bitte mit sauberem Secret-Handling und kurzen Laufzeiten.
Wenn du Rendezvous/Relay komplett unter eigener Kontrolle betreiben willst, lassen sich eigene Server angeben, unter anderem über:
--relay-urlfür einen eigenen Rendezvous-Server--transit-helperfür einen eigenen Transit-Relay
Fazit
magic-wormhole ist kein Ersatz für etablierte, gemanagte Transferwege. Aber als Werkzeug für den Alltag ist es extrem stark: schnell, unkompliziert und mit einem nachvollziehbaren Security-Modell.
Gerade in KMU-Realität, wo es oft weder Zeit noch Lust gibt, für jeden Support-Fall eine neue Freigabe-Kaskade zu starten, ist so ein “sicher genug und sofort nutzbar” Tool oft genau das Richtige.
Quellen und weiterführende Links
- magic-wormhole Dokumentation (Read the Docs)
- magic-wormhole auf GitHub
- wormhole-william (Go, Single-Binary)
- magic-wormhole auf PyPI
Bis zum nächsten Mal, Euer Joe


