granja: el -i ~/.ssh/github5 de todos los scripts es un no-op — entra el fallback a id_ed25519
This commit is contained in:
@@ -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 <fichero inexistente>` 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`** (`<nombre> <ip>` 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.
|
||||
|
||||
Reference in New Issue
Block a user