onboard: le chiavi dei server in known_hosts, e verifica dice perche' non entri

Marco Laterza, amministratore, si e' visto dire "produzione: non entri
(normale se non hai il ruolo di rilascio...)" con la chiave gia' sul
server: al suo PC mancava la chiave host della macchina nuova, e con
BatchMode=yes ssh rifiuta un host sconosciuto senza provare la chiave.

configura.sh scrive in ~/.ssh/known_hosts le chiavi di server.known_hosts,
lette sulle tre macchine l'08/10/2026, togliendo prima quelle vecchie per
gli stessi nomi. verifica.sh legge l'errore di ssh: giallo solo se il
server rifiuta la chiave personale, rosso con il rimedio per chiave host
mancante o cambiata e per il blocco dopo troppi tentativi.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Fabio
2026-10-08 10:47:10 +02:00
co-authored by Claude Opus 5.5
parent 2a4dbf3ad2
commit b83fc9883d
4 changed files with 79 additions and 18 deletions
+18 -1
View File
@@ -1,6 +1,6 @@
#!/bin/bash
#
# PREPARA IL PC: accesso Gitea, accesso AWS, git, chiave SSH, nomi dei server.
# PREPARA IL PC: accesso Gitea, accesso AWS, git, chiave SSH, nomi e chiavi dei server.
#
# ./configura.sh
#
@@ -229,6 +229,23 @@ BLOCCO="$BLOCCO$FINE_BLOCCO"
&& mv "$CONFIG.nuovo" "$CONFIG" && chmod 600 "$CONFIG"
ok "ssh $STAGING_NOME, ssh $PRODUZIONE_NOME e ssh $PRODUZIONE_VECCHIA_NOME: configurati"
# --------------------------------------------------------------------------
titolo "5. Chiavi dei server in ~/.ssh/known_hosts"
# --------------------------------------------------------------------------
# Quelle di server.known_hosts, lette sulle macchine: cosi' il primo
# collegamento non chiede "Are you sure you want to continue connecting?",
# e la risposta non dipende da chi e' in mezzo alla rete quel giorno. Quelle
# che c'erano per gli stessi nomi si tolgono prima (ssh-keygen ne lascia una
# copia in known_hosts.old): una vecchia rimasta li' farebbe dire a ssh che
# il server e' cambiato.
NOTI="$HOME/.ssh/known_hosts"
touch "$NOTI" && chmod 600 "$NOTI"
for H in $(grep -v '^#' server.known_hosts | awk 'NF {print $1}' | sort -u) ; do
ssh-keygen -R "$H" -f "$NOTI" > /dev/null 2>&1
done
grep -v '^#' server.known_hosts | awk 'NF' >> "$NOTI"
ok "chiavi di $STAGING_NOME, $PRODUZIONE_NOME e $PRODUZIONE_VECCHIA_NOME registrate"
# --------------------------------------------------------------------------
titolo "Fatto"
# --------------------------------------------------------------------------