Ses machines sont detruites. Le depot en parlait comme d un ecosysteme vivant, et l une de ces phrases datait de la veille : positionnement.md comptait ses 5 VM dans la flotte, chiffre que j avais moi-meme ecrit en revisant. CE QUI EST CORRIGE positionnement.md 51 VM sur quatre plans vivants, et non 56 sur cinq sortir-les-cles-du-poste le genome est replique DEUX fois, non trois wiki/Glossaire.md SQLite : ce qu il PORTAIT filiation-emancipation la famille de pairs a perdu un pair decisions-architecture D-83 consigne le retrait, avec son cout carte-set-ops.md 80 decisions en vigueur LE COUT, PARCE QU IL N ETAIT NOMME NULLE PART D-82 lui avait laisse deux raisons d etre : la mise en oeuvre de reference du modele origine, et un TEMOIN de plus du genome. Le retrait solde la premiere et abaisse la seconde de trois copies vivantes a deux. Or c est le raisonnement de son propre README qui portait tout : on n echappe pas a la boucle par la ruse, mais par le NOMBRE. Le nombre a baisse. Et le point unique de defaillance que patient 0 existait pour eliminer — eregion, hors flotte, que Set-OPS ne deploie ni ne sauvegarde ni ne prouve — est toujours a la racine. Il n a jamais ete elimine, seulement promu ; il n y a maintenant plus de miroir independant pour l absorber. CE QUI RESTE SUR LE TERRAIN, ET QUI N EST PAS DE LA PROSE Son plan est encore sur disque en federe: true. La federation lui reserve donc toujours l index 29, la zone SDN t29, ses VNets, les VLAN 1291-1296 et les sous-reseaux 10.29.16-21.0/24. Quatre machines du site — backup, cache, dns, forge — acceptent encore SSH, apt, DNS et HTTPS depuis 10.29.0.0/16 : un perimetre vide. Le runner du site clone encore ops-patient0. C est un geste, pas une intention, et il touche le reseau : il n est pas fait ici. La sequence est listee dans D-83. make prouver --verifier : CONFORME, 56 OK, 0 echec, 1 saute. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
5.5 KiB
Pour qui : l'exploitant, le jour où il réalise que 1 644 octets valent toute l'installation. À faire une fois, puis à refaire quand une clé change.
Sortir les clés du poste
Ce qui est en jeu
Le code de Set-OPS est répliqué deux fois : eregion et la forge du site. Les
voûtes chiffrées y sont aussi.
Ce chiffre était trois, et il a baissé sans que rien ne le signale. Le troisième témoin était patient 0 ; ses machines n'existent plus. Un coffre répliqué deux fois reste solide — mais c'est la redondance du génome qui a diminué, pas le chiffrement, et c'est exactement ce que la page Filiation, signatures & témoins appelle la vraie mesure de résistance d'une lignée : combien de copies vivantes, sur combien de machines distinctes.
Les clés qui l'ouvrent vivent dans neuf fichiers de ce poste — 1 644 octets — sans aucune copie ailleurs. S'y ajoutent les clés SSH par lesquelles on entre sur les hyperviseurs, la frontière et chaque machine.
Ce qu'on perd avec le poste, par ordre de gravité :
| Ce qui disparaît | Conséquence |
|---|---|
| Le poste seul | Les mots de passe restic restent lisibles sur les machines vivantes (/etc/setops/restic.pass) — récupérable, mais douloureux, et plus aucun déploiement possible entre-temps |
| Le poste et une machine | L'état de cette machine devient illisible |
| Le poste et le site | Terminal |
La manœuvre
make cles-recenser # voir ce qui sortirait, sans rien écrire
make cles-exporter VERS=/media/…/CLE # sortir, chiffrer, RELIRE
Lance-la toi-même, dans ton terminal. gpg demande une phrase de passe : elle ne doit
passer ni par un journal, ni par le contexte d'un assistant. C'est la seule façon de
s'en assurer.
L'outil refuse trois choses, et chacune a été éprouvée en la faisant échouer :
- une destination dans l'infrastructure — ces clés ouvrent les sauvegardes ; les y ranger ferait un coffre dont la clé est à l'intérieur ;
- écraser une archive existante — elle est peut-être la seule ;
- une archive qu'il n'arrive pas à rouvrir — elle est alors supprimée. Une sauvegarde de clés qu'on ne sait pas ouvrir est pire que rien : elle donne le sentiment d'être protégé.
Il ne montre jamais le contenu des clés — seulement leur nom, leur taille et leur empreinte. De quoi vérifier sans divulguer.
Les deux gestes qui restent, et qui ne sont pas facultatifs
1. La phrase de passe va ailleurs que le support. Séparés, ils ne valent rien l'un sans l'autre ; ensemble, ils valent l'installation. Un papier dans un autre lieu, ou un gestionnaire de mots de passe qui n'est pas sur ce poste.
2. Une seconde copie, dans un autre lieu physique. Un support unique dans un tiroir unique, c'est le problème qu'on vient de fermer, déplacé de quelques mètres.
Les rouvrir — la moitié qui compte
Le jour où l'on s'en sert, le poste est mort. Le dépôt Set-OPS est répliqué trois fois, mais le cloner demande la clé SSH… qui est dans l'archive qu'on essaie d'ouvrir. Une procédure rangée dans le dépôt serait donc inaccessible exactement quand elle sert.
La clé se suffit donc à elle-même. À côté de l'archive :
setops-cles-<poste>.tar.gpg les clés, chiffrées
restaurer_cles.py le script, autonome
LISEZ-MOI-RESTAURATION.txt le mode d'emploi, et les commandes manuelles
Une clé faite avant cette version ne porte pas les compagnons.
make cles-compagnons VERS=/media/…/CLEles y dépose sans refaire l'archive : ni phrase de passe redemandée, ni risque d'écraser ce qui est déjà vérifié.
Sur la machine neuve, il ne faut que gpg, python3 et la phrase de passe :
python3 restaurer_cles.py setops-cles-*.tar.gpg --lister # voir sans rien écrire
python3 restaurer_cles.py setops-cles-*.tar.gpg # remettre en place
Le script remet chaque fichier à sa place selon son nom, et repose les droits à 0600.
Ce n'est pas cosmétique : ssh refuse une clé privée que d'autres peuvent lire, et son
message ne dit pas qu'il s'agit d'un droit — une archive extraite depuis un support FAT
arrive systématiquement dans cet état. Il refuse aussi d'écraser une clé déjà là :
lancé par erreur sur un poste qui fonctionne, il ne détruit rien.
Si même ce script refuse de tourner, le LISEZ-MOI porte les commandes manuelles — gpg,
tar, chmod. Les deux chemins ont été éprouvés le 2026-09-05 : export, poste vidé,
restauration depuis la clé seule, empreintes comparées — identiques, 4 sur 4, droits
700/600.
L'éprouver pendant qu'on a encore le choix
make cles-restaurer ARCHIVE=/media/…/setops-cles-*.tar.gpg
Il refusera, puisque les clés sont déjà en place — et ce refus est en soi la preuve que l'archive s'ouvre et que la phrase de passe est la bonne. C'est le test le moins cher qui existe, et il vaut d'être refait après chaque changement de clé.
Quand recommencer
Quand une voûte est créée ou sa clé changée (voutes.py), quand une paire SSH de runner
est refaite, et à l'arrivée d'un écosystème. make cles-recenser dit en une seconde si
l'archive rangée est encore complète : compare le nombre de fichiers et les empreintes.
Ce que ça ne couvre pas
La phrase de passe elle-même : si elle est perdue, l'archive est du bruit. C'est le prix du chiffrement, et c'est pour ça que le geste 1 n'est pas décoratif.