From fd065720f531aa769df785f8ff4b40d511f1797f Mon Sep 17 00:00:00 2001 From: Sergio Date: Fri, 18 Sep 2026 20:20:24 +0000 Subject: [PATCH] =?UTF-8?q?granja:=20el=20`-i=20~/.ssh/github5`=20de=20tod?= =?UTF-8?q?os=20los=20scripts=20es=20un=20no-op=20=E2=80=94=20entra=20el?= =?UTF-8?q?=20fallback=20a=20id=5Fed25519?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CLAUDE.md | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index ad9432fa..a5d4fca5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -57,10 +57,30 @@ nombre. El modelo efímero de pago sigue documentado y funcionando, pero está S trabajo desde el 2026-09-05. Un `farm-up` por reflejo cuesta dinero real y no hace falta. ```sh -ssh -i ~/.ssh/github5 root@dev.gioser.net # github5 está en su authorized_keys -ssh -i ~/.ssh/sergio root@dev.gioser.net # la otra que entra; NO hay entrada en ssh/config +ssh -i ~/.ssh/id_ed25519 root@dev.gioser.net # la que entra HOY; NO hay entrada en ssh/config ``` +⚠ **Los scripts piden `~/.ssh/github5`, ese fichero NO EXISTE en el hub, y aun así todo funciona — +por accidente** (medido 2026-09-18). Una docena larga de scripts trae +`SSH_KEY="${SSH_KEY:-$HOME/.ssh/github5}"`: `estado-granja.sh`, `cosecha-cron.sh`, `harvest-go.sh`, +`farm-up.sh`, `farm-down.sh`, `harkaq-vol.sh`… El único fichero en `~/.ssh` es `id_ed25519`, y sin +embargo `estado-granja.sh` con su default entra y reporta. **`ssh -i ` no +falla**: avisa por stderr y cae a las identidades por defecto, que es donde está la buena: + +``` +Warning: Identity file /home/sergio/.ssh/github5 not accessible: No such file or directory. +debug1: identity file /home/sergio/.ssh/id_ed25519 type 2 +debug1: Offering public key: /home/sergio/.ssh/id_ed25519 ED25519 SHA256:kAqayFW4hSqq… +debug1: Server accepts key: … · Authenticated to dev.gioser.net using "publickey". +``` + +O sea que **el `-i` de todos esos scripts es hoy un no-op** y quien manda es el fallback. Se cae el +día que alguien ponga un `~/.ssh/github5` que no entre (el `-i` explícito GANA sobre el default), o +que aparezca un `IdentityFile`/`IdentitiesOnly` en `ssh/config`. Y el error dirá `Permission +denied`, sin mencionar `SSH_KEY` ni `github5`. Mismo patrón que el reaper salvándose por la +subcadena `gioser`: *una protección que funciona por accidente se ve igual que una que funciona por +diseño*. Barrer el default de los scripts es su propia unidad de trabajo — no tocarlos de paso. + **Se enchufa por `scripts/farm/.fleet`** (` ` por línea), que **está en `.gitignore`**: o sea que un hub recién clonado nace con la flota VACÍA y la granja queda desconectada **sin que nada falle** — la cosecha dice «flota vacía» cada 30 min y los artefactos del worker no vuelven.