From e2e5bc6f048128109e295ebc518ac373f31356cb Mon Sep 17 00:00:00 2001 From: sergio Date: Mon, 6 Jul 2026 06:56:25 -0400 Subject: [PATCH] =?UTF-8?q?granja:=20fix=20host-key=20en=20workers=20ef?= =?UTF-8?q?=C3=ADmeros=20=E2=80=94=20known=5Fhosts=20a=20/dev/null?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- scripts/farm/farm-down.sh | 4 +++- scripts/farm/farm-run.sh | 4 +++- scripts/farm/farm-up.sh | 6 +++++- 3 files changed, 11 insertions(+), 3 deletions(-) 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"