Soluzione 1:
Puoi usare ssh -o StrictHostKeyChecking=no
per disattivare il controllo known_hosts
momentaneamente. Ma lo sconsiglierei. Dovresti davvero controllare perché la chiave host è cambiata.
Un'altra opzione è aggiungere una voce specifica al tuo ~/.ssh/config
per l'host in questione. Questo potrebbe essere un approccio valido se hai un determinato host che genera nuove chiavi host ogni volta che si riavvia e viene riavviato per un motivo valido più volte al giorno.
Host <your problematic host>
StrictHostKeyChecking no
Soluzione 2:
Per ignorare completamente il tuo file host conosciuto in un ambiente POSIX, imposta GlobalKnownHostsFile
e UserKnownHostsFile
opzioni a /dev/null
:
ssh -o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null [email protected]
Impostazione del StrictHostKeyChecking=no
l'opzione ti consentirà di connetterti ma SSH mostrerà comunque un avviso :
ssh -o StrictHostKeyChecking=no [email protected]
Come altri hanno notato, probabilmente è meglio affrontare il problema di fondo. Potresti prendere in considerazione l'autenticazione del certificato SSH per verificare gli host, ad esempio.
Soluzione 3:
Se hai reinstallato il server e quindi l'identificazione è cambiata, dovresti semplicemente eliminare la riga specificata 155 da /Users/alexus/.ssh/known_hosts
e vai avanti.
Se passi da una rete privata all'altra, dovresti utilizzare i nomi host per connetterti, poiché anche il client ssh salverà le chiavi a seconda del nome host. Aggiungi qualcosa di simile al tuo /etc/hosts
:
10.52.11.171 server1
10.52.11.171 server2
e poi usa ssh server1
quando connesso alla sottorete 1 e ssh server2
quando connesso alla subnet2. In questo modo, entrambi i server possono avere hostkey differenti.
Soluzione 4:
-o StrictHostKeyChecking=no
funziona solo se host non è già presente nel file known_hosts.
Penso che sia più pulito (nessun avviso), se ti aspetti che la chiave degli host cambi forse a causa della clonazione di vm, imporre l'ignoranza di quel tipo di host come questo:
# Handle possible SSH key changes
host_key=$(ssh-keyscan -t rsa ${host_ip})
grep "${host_key}" ~/.ssh/known_hosts >/dev/null || {
ssh-keygen -R ${host_ip}
echo ${host_key} >> ~/.ssh/known_hosts
}
# connect as normal way
ssh [email protected]${host_ip} "hostname"
Soluzione 5:
Alcune persone dicono che non è giusto, non dovresti farlo e così via, ma ho bisogno di questo anche per testare un paio di dispositivi incorporati più e più volte. Devi disabilitare StrictHostKeyChecking=no
, è corretto, ma reimposta anche il file host noto su /dev/null
. Qui un esempio con autologin e ps
sul dispositivo remoto.
sshpass -p pass ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null [email protected] 'ps ax'