SSH in una scatola con un IP modificato di frequente


22

Ho alcuni cloud box che cambiano frequentemente il loro IP.

Ho usato il nome host ma devo modificare il file known_hosts ogni volta che il server si avvia a causa di questo messaggio di errore:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is

A parte eventuali rischi per la sicurezza e simili associati a ciò che voglio fare, c'è un modo per ignorare questo errore o sovrascrivere automaticamente il file known_hosts in modo che non debba sempre modificarlo da solo?

Risposte:


20

Modifica il tuo file ssh_config e aggiungi cambia questa riga:

CheckHostIP no

Per impostazione predefinita, CheckHostIP è "Sì". Quello che fa è fare esattamente il tipo di controllo che stai fallendo. Disattivarlo significa che si fida solo che l'IP sia variabile e che si occuperà del controllo dei tasti rispetto al nome host.


2
Ciò disabilita una funzione di sicurezza per tutti i server ai quali ti connetteresti, il che è una pratica estremamente negativa. Dovresti invece utilizzare questa opzione solo per un host specifico che sai che avrà questo problema - o utilizzare l'opzione HostKeyAlias ​​- di nuovo per un host specifico.
zaTricky,

@zaTricky "Pratica estremamente negativa"? Cosa c'è di così estremo hmm? Penso che sia altrettanto sicuro, è semplicemente una preferenza individuale. Basta aggiungere una chiave a un nome host (anziché IP). Per https, HPKP funziona in modo simile e tutti dicono che è sicuro o eccessivamente sicuro.
Kubanczyk,

@kubanczyk Questo sta dicendo per renderlo un ambiente globale - nessun consiglio riguardo alla specifica di un host, che ho sottolineato
zaTricky,

25

Aggiunta: puoi provare a disabilitare solo il controllo CheckHostIP per quel nome:

Host *
  [ global settings .. ]

Host very.dynamic.host
  CheckHostIP no

5
Questa è l'opzione migliore per ridurre l'impatto sulla sicurezza della disabilitazione del controllo IP.
Espo,

3

Molte delle risposte qui funzioneranno, ma tecnicamente sono soluzioni alternative. OpenSSH ha già un built-in funzione con questo in mente: HostKeyAlias.


Nel tuo file .ssh / config, aggiungi HostKeyAlias <alias>a una configurazione host:

host myserver.example.com
HostKeyAlias myserver.example.com

Con questo in luogo, la connessione al server myserver.example.comnon utilizzerà il nome host o l'indirizzo IP per il riferimento locale - sarà sempre solo utilizzare i HostKeyAlias dato durante la connessione al server. Per me ha senso usare il nome host - ma puoi ovviamente usare qualsiasi alias che ti piace.


Le configurazioni tipiche per me per gli host dinamici sono le seguenti:

host myserver
hostname myserver.dyn.example.com
HostKeyAlias myserver.private.example.com

Questo può anche essere usato in alcuni scenari oscuri in cui sai che un sacco di server hanno le stesse chiavi host (in genere questo non dovrebbe essere il caso). Ciò impedirebbe quindi voci duplicate. In futuro, se le chiavi cambiano legittimamente, non è necessario sostituire / eliminare più voci. Solo uno. I server Gitlab Geo ne sono un buon esempio.


Per quanto riguarda la cancellazione del file known_hosts, suggerirei di esaminare altre domande / risposte specificamente legate alla gestione / rimozione di voci known_hosts non aggiornate. Ad esempio, vedi Come gestire il mio file .ssh / known_hosts ; Sono particolarmente colpito dalla risposta di user1953828, anche se vedo che non ha molti voti (ancora). :)


Questo dimostra quanto valore ha una risposta dello stesso giorno su SO rispetto alla risposta giusta, a cui ha risposto 8 anni dopo.
parità

2

Uso queste opzioni poco chiare per aggirare questo problema. (La chiave pubblica del mio host viene rigenerata abbastanza spesso. In questo modo viene rimosso il controllo IP e chiave)

ssh remoteServerName -l username -o "UserKnownHostsFile=/dev/null"

Puoi anche usarlo solo se la chiave rimane invariata ma l'IP cambia:

ssh remoteServerName -l username -o "CheckHostIP=no"

Se il tuo server cambia spesso le chiavi dell'host, dovresti considerare di impostare la firma della chiave dell'host
Cameron Tacklind,

1

È possibile impostare StrictHostKeyChecking = no nella configurazione del client ssh (ovvero il file ~ / ssh / config sul computer da cui ci si connette), per ignorare l'avviso.


1

Potresti inserire il CheckHostIP notuo ~/.ssh/configfile, ma questo ti lascia aperto agli attacchi di spoofing. Se non ti preoccupi, questa impostazione dovrebbe disattivare il known_hostscontrollo.


0

Evito di aggiungere le impronte digitali al mio known_hostsfile durante la connessione a macchine AWS transitorie. Uso un comando come

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i secret.pem ec2-user@10.0.0.5

per connettersi a loro. Non ti chiederà se desideri aggiungere la macchina "all'elenco degli host conosciuti". Sostituisci 10.0.0.5con l'indirizzo IP della tua macchina e secret.pemcon il percorso completo della tua chiave Ssh. Riceverai comunque un avviso che 10.0.0.5è stato aggiunto, ma è davvero scomparso /dev/null. Lo faccio abbastanza spesso da impostare un alias nel mio~/.profile

alias awsssh='ssh -i secret.pem -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

Riservo i ssh ec2-user@example.comcomandi di tipo per le macchine dove mi sono preso la briga di controllare l'impronta digitale.


Questo ha senso per i server sempre e solo la connessione a una volta - ma ci sono modi migliori per sbarazzarsi di voci obsolete - e non si deve essere che preoccupati per come sporca di file vostre known_hosts è. Probabilmente hai speso molto più tempo ed energia a creare quell'alias che il valore che l'alias ti ha portato.
zaTricky,

-2

Rendi known_hosts di sola lettura.


Ciò interrompe la funzionalità quando sono facilmente disponibili opzioni pragmatiche. : - /
zaTricky,
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.