magic-wormhole: Sicherer Dateitransfer per Einmal-Code

magic-wormhole: Sicherer Dateitransfer per Einmal-Code

5 min read
Network

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:

  1. Support-Bundle erstellen (z. B. Logs, Export, ein paar Screenshots).
  2. Optional einen Hash berechnen, damit man später sicher ist, dass wirklich das richtige Paket angekommen ist.
  3. Paket per magic-wormhole senden.
  4. 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.

SchrittWas passiertWozu das gut ist
1. CodeDer Sender erzeugt einen kurzen Einmal-Code.Einfacher “Shared Secret” für genau diesen Transfer.
2. RendezvousBeide 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. PAKEAus dem Code wird per SPAKE2 (PAKE) ein gemeinsamer Schlüssel abgeleitet.Ende-zu-Ende Schlüssel, ohne klassischen Key-Exchange-Zirkus.
4. DatenpfadErst 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-TransferDaten 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)

  1. Teile den Code nicht im gleichen Kanal wie den Link zum Ticket oder die Datei-Details. Am besten: Telefon oder separater Chat.
  2. Rechne bei Logs immer damit, dass Zugangstoken, Hostnames oder personenbezogene Daten drinstehen können. Schick nur, was nötig ist.
  3. 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-url für einen eigenen Rendezvous-Server
  • --transit-helper fü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.

Bis zum nächsten Mal, Euer Joe

© 2026 trueNetLab