C'è un modo semplice per aggiornare le informazioni in known_hosts quando sai che una chiave host è cambiata?


38

Se il sistema operativo di un host è stato reinstallato e la sua chiave pubblica è stata rigenerata, ovviamente fallirà perché la nuova chiave non corrisponde a quella precedente.

C'è un modo più semplice per dire a ssh che sai che la chiave dell'host è cambiata e che vuoi che sia aggiornata. Penso che sia un po 'soggetto a errori usare un editor di testo o qualcosa come sed per rimuovere la linea offensiva.


Questo duplica una domanda sul superutente . Vedi le informazioni più dettagliate lì.
Yitz,

Risposte:


59

Utilizzare ssh-keygen -R hostnameper rimuovere il nome host dal file known_hosts. Alla successiva connessione, la nuova chiave host verrà aggiunta al file known_hosts.


12
TARGET_HOST=[hostname or IP]

# Remove the old key(s) from known_hosts
ssh-keygen -R $TARGET_HOST

# Add the new key(s) to known_hosts (and also hash the hostname/address)
ssh-keyscan -H $TARGET_HOST >> ~/.ssh/known_hosts

La prossima volta che ti connetti, ti connetterai senza che ti venga chiesto Are you sure you want to continue connecting (yes/no)?poiché le chiavi saranno già nel known_hostsfile.


1
vedi anche StrictHostKeyControllo in ~ / .ssh / config
Jeff Schaller

2
Userei un nome di variabile diverso ... HOST è in alcune shell che fornisce il tuo nome host, quindi preferirei non modificarlo (so che uno può uscire o fare questo da una subshell, ma comunque , perché no thehostinvece? o qualcosa del genere. una variabile ALLCAPS potrebbe scontrarsi con un nome interno riservato. i nomi in minuscolo non dovrebbero.)
Olivier Dulac,

Queste chiavi in ​​known_hosts sono precedute da alcuni elementi che iniziano con | 1 |. Quella roba non viene aggiunta al file tramite questo metodo o sbaglio? qual è la differenza allora, perché ciò che ritorna ssh-keyscan non inizia con | 1 |
Daniel F,

1
(@ DanielF +) se si utilizza il formato con hash e si accettano le chiavi, sshci sono voci separate per il nome host e i suoi indirizzi, quindi è necessario ssh-keygen -R ciascuno di essi per evitare conflitti
dave_thompson_085
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.