tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 604Rust 56Shell 36Markdown 281227 Sutichaykuna

granja: fix host-key en workers efímeros — known_hosts a /dev/null

Los workers efímeros reciclan IPs de Hetzner. accept-new RECHAZA una clave de host
cambiada ⇒ el 'until ssh true' de farm-up colgaba para siempre en una IP reusada.
Como el modelo es hub-and-spoke (worker sin secretos, compute descartable) no hay
superficie MITM: saltamos verificación de host y no ensuciamos known_hosts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

e2e5bc6f048128109e295ebc518ac373f31356cb · ruwaq sergio · (3 killa ñawpaq) · tayta b90855dc3 · kay commitpi sach'ata qhaway

Semántico sayk'uy

Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.

3 qillqakuna · +11 −3

diff --git a/scripts/farm/farm-down.sh b/scripts/farm/farm-down.sh
index 6ba0d013..127ae9c8 100755
--- a/scripts/farm/farm-down.sh
+++ b/scripts/farm/farm-down.sh
@@ -16,7 +16,9 @@ SSH_KEY="${SSH_KEY:-$HOME/.ssh/github5}"
 REMOTE="${REMOTE:-/opt/hammer}"
 ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
 FLEET="$ROOT/scripts/farm/.fleet"
-SSH="ssh -i $SSH_KEY -o StrictHostKeyChecking=accept-new -o ConnectTimeout=10"
+# Ver nota en farm-up.sh: workers efímeros reciclan IPs ⇒ known_hosts a /dev/null (hub-and-spoke,
+# worker sin secretos, sin superficie MITM que proteger).
+SSH="ssh -i $SSH_KEY -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR -o ConnectTimeout=10"
 cd "$ROOT"
 [ -s "$FLEET" ] || { echo "flota vacía (scripts/farm/.fleet)"; exit 0; }
 
diff --git a/scripts/farm/farm-run.sh b/scripts/farm/farm-run.sh
index ca9d1dfb..0f7f0a65 100755
--- a/scripts/farm/farm-run.sh
+++ b/scripts/farm/farm-run.sh
@@ -26,7 +26,9 @@ MAXWAIT="${MAXWAIT:-21600}"
 SSH_KEY="${SSH_KEY:-$HOME/.ssh/github5}"
 ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
 FLEET="$ROOT/scripts/farm/.fleet"
-SSH="ssh -i $SSH_KEY -o StrictHostKeyChecking=accept-new -o ConnectTimeout=10"
+# Ver nota en farm-up.sh: workers efímeros reciclan IPs ⇒ known_hosts a /dev/null (hub-and-spoke,
+# worker sin secretos, sin superficie MITM que proteger).
+SSH="ssh -i $SSH_KEY -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR -o ConnectTimeout=10"
 cd "$ROOT"
 
 cycles() { $SSH "root@$1" 'journalctl -u hammer-farm -o cat --no-pager 2>/dev/null | grep -c "ciclo terminado"' 2>/dev/null || echo 0; }
diff --git a/scripts/farm/farm-up.sh b/scripts/farm/farm-up.sh
index 5d3f3244..7f938f0b 100755
--- a/scripts/farm/farm-up.sh
+++ b/scripts/farm/farm-up.sh
@@ -26,7 +26,11 @@ SSH_KEY="${SSH_KEY:-$HOME/.ssh/github5}"
 REMOTE="${REMOTE:-/opt/hammer}"
 ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
 FLEET="$ROOT/scripts/farm/.fleet"
-SSH="ssh -i $SSH_KEY -o StrictHostKeyChecking=accept-new -o ConnectTimeout=10"
+# Workers efímeros RECICLAN IPs de Hetzner ⇒ un known_hosts persistente choca ("HOST KEY CHANGED")
+# y accept-new RECHAZA la clave cambiada, colgando el `until ssh true` para siempre. Como el modelo
+# es hub-and-spoke (el worker NO tiene secretos: compute puro descartable), saltamos la verificación
+# de host y no ensuciamos known_hosts (/dev/null). No hay superficie MITM que proteger acá.
+SSH="ssh -i $SSH_KEY -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR -o ConnectTimeout=10"
 cd "$ROOT"
 touch "$FLEET"