
magic-wormhole : transfert de fichiers sécurisé avec un code à usage unique
Table of Contents
Bonjour à tous,
aujourd’hui, je veux vous présenter un petit outil en ligne de commande vers lequel je reviens souvent en support et en incident : magic-wormhole. Il résout un problème bien plus courant dans les entreprises “normales” que n’importe quelle histoire marketing “enterprise” : vous devez envoyer un fichier (ou un dossier) à quelqu’un tout de suite, mais l’e-mail est trop limité, un lien cloud est politiquement ou légalement délicat, et “ouvrir un port vite fait” n’est pas une option.
Vendredi, 16 h 47. Une entreprise d’environ 60 personnes a un souci urgent : le serveur de fichiers central est lent, les utilisateurs remontent des timeouts, et le prestataire IT externe demande un bundle de support avec des logs et un petit export de configuration. Le paquet fait près de 900 Mo. L’e-mail le bloque, SharePoint est interdit pour des raisons de conformité, et monter un FTP ad-hoc est un cauchemar que vous n’avez pas envie de créer en 2026.
C’est exactement pour ça que magic-wormhole existe : on échange un code à usage unique, on transfère le fichier chiffré de bout en bout, et c’est réglé.
Qu’est-ce que magic-wormhole ?
magic-wormhole est un outil léger pour des transferts ad-hoc entre deux machines. L’astuce, c’est le wormhole code (par exemple 7-coral-lion) : les deux côtés saisissent le même code, ce qui initialise une connexion chiffrée de bout en bout.
L’important, c’est ce dont magic-wormhole n’a pas besoin :
- pas de compte
- pas de portail de connexion
- pas de “téléversement quelque part + lien à partager”
- pas de règles firewall entrantes
Les deux côtés ont seulement besoin de wormhole et d’un accès Internet sortant. En pratique : si le HTTP(S) sortant passe, magic-wormhole passe aussi dans la majorité des cas.
Un cas concret en PME
Revenons à notre vendredi. Le flux pragmatique ressemble souvent à ça :
- Créer un bundle de support (logs, export, quelques captures).
- Optionnellement calculer un hash pour confirmer ensuite que c’est exactement le même paquet.
- Envoyer le bundle via magic-wormhole.
- Partager le code via un second canal (téléphone, chat séparé, le dicter).
Côté expéditeur :
tar -czf support-bundle.tgz ./logs ./config-export
sha256sum support-bundle.tgz
wormhole send support-bundle.tgz
magic-wormhole affiche le code. Le destinataire lance :
wormhole receive
On saisit le code, le téléchargement démarre, puis on compare les hashes. Dans la vraie vie, ce mélange de “rapide” et “quand même propre” est extrêmement utile pour beaucoup de PME.
Comment je l’utilise en pratique
Envoyer un fichier de A vers B
Expéditeur :
wormhole send /path/to/file.zip
Destinataire :
wormhole receive
Le fichier est enregistré dans le répertoire courant. Je crée souvent un dossier rapide pour éviter que ça se perde entre Téléchargements et Bureau :
mkdir -p ~/wormhole-recv && cd ~/wormhole-recv
wormhole receive
Envoyer des dossiers
Si vous devez envoyer un dossier complet :
wormhole send --dir ./support-bundle/
Ce qui se passe en coulisses (court et sans marketing)
Sous le capot, magic-wormhole fait trois choses qu’on devrait autrement bricoler à la main : mettre en relation les pairs, négocier les clés de manière sûre et transférer les données de façon fiable, même quand le NAT et les firewalls compliquent la vie.
| Étape | Ce qui se passe | Pourquoi c’est important |
|---|---|---|
| 1. Code | L’expéditeur génère un code court à usage unique. | Secret partagé simple pour ce transfert. |
| 2. Rendezvous | Les deux clients se connectent à un serveur de rendezvous (par défaut la “mailbox” publique). | Les pairs se trouvent sans ports entrants. |
| 3. PAKE | Une clé partagée est dérivée du code via SPAKE2 (PAKE). | Clé E2E sans gestion classique des clés. |
| 4. Chemin de données | Connexion directe d’abord, puis fallback via relay/transit si nécessaire. | Fonctionne derrière NAT et en réseau d’entreprise standard. |
| 5. Transfert E2E | Données chiffrées et protégées en intégrité de bout en bout. | Le relay ne voit que du chiffrement. |
L’idée clé : rendezvous/relay est de l’infrastructure, mais ce n’est pas l’endroit où vos données existent en clair.
Sécurité : points forts, limites et quelques règles
Ce que j’aime chez magic-wormhole, c’est que le modèle de sécurité est assez honnête : c’est du bout en bout, mais l’identité n’est pas fournie automatiquement.
Ce que vous obtenez
- Chiffrement de bout en bout : le contenu est protégé entre expéditeur et destinataire, même avec un relay.
- Accès court : le code est conçu pour un transfert, pas comme un mot de passe durable.
- Faible surface d’attaque : pas de serveur à durcir, pas de gestion d’utilisateurs, pas d’interface web.
Là où il faut faire attention
- Le code est le mot de passe. Qui a le code est “votre pair”. Si le code finit dans un ticket ouvert, c’est un problème.
- Pas d’audit par défaut. Pour certaines entreprises, c’est un avantage ; pour d’autres, c’est rédhibitoire. Si vous avez besoin de DLP, d’approbations et de traçabilité, utilisez un canal officiel.
- Les endpoints restent la réalité. Si l’expéditeur est compromis, il peut envoyer n’importe quoi. Si le destinataire est compromis, le fichier l’est après réception.
Règles pratiques (qui aident vraiment)
- Ne partagez pas le code dans le même canal que le lien du ticket ou le contexte du fichier. Idéalement : téléphone ou chat privé séparé.
- Considérez que les logs peuvent contenir des tokens, des hostnames ou des données personnelles. Envoyez uniquement le nécessaire.
- Pour des artefacts critiques : envoyez un hash séparément et vérifiez après réception.
Installation (court et réaliste)
Sur beaucoup de systèmes, c’est un one-liner via le gestionnaire de paquets :
- Debian/Ubuntu :
sudo apt install magic-wormhole - macOS :
brew install magic-wormhole
Si les paquets de la distro sont trop anciens, pipx est souvent l’option la plus propre :
pipx install magic-wormhole
pipx ensurepath
Et si vous ne voulez pas de Python du tout (serveur minimal, conteneur, environnement de secours) : wormhole-william est un port Go compatible en binaire unique.
Automatisation et auto-hébergement
Pour des workflows contrôlés, magic-wormhole peut s’automatiser :
CODE="5-alpaca-orbit"
wormhole send --code "$CODE" /path/to/db.dump
Destinataire :
wormhole receive --code "$CODE" --accept-file
C’est pratique, mais dès qu’on fixe un code on revient à la gestion de secrets. Si vous automatisez, faites-le avec une gestion saine des secrets et des durées courtes.
Si vous voulez un contrôle total sur rendezvous/relay, vous pouvez pointer le client vers votre propre infrastructure, notamment :
--relay-urlpour votre serveur de rendezvous--transit-helperpour votre relay de transit
Conclusion
magic-wormhole ne remplace pas les workflows de transfert gérés et gouvernés. Mais comme outil du quotidien, c’est excellent : rapide, sans friction, et avec un modèle de sécurité clair.
Surtout en PME, où il n’y a souvent ni le temps ni l’envie de monter une cascade d’approbations pour chaque demande de support, un outil “assez sûr et utilisable immédiatement” est souvent exactement ce qu’il faut.
Sources et liens utiles
- Documentation magic-wormhole (Read the Docs)
- magic-wormhole sur GitHub
- wormhole-william (Go, binaire unique)
- magic-wormhole sur PyPI
À la prochaine, Joe


