2009-10-31 14 views
37

Lavoro su una rete in cui i sistemi su un indirizzo IP cambieranno frequentemente. Vengono spostati su e fuori dal workbench e DHCP determina l'IP che ottengono.SSH su Linux: disabilitazione del controllo della chiave host per gli host sulla subnet locale (known_hosts)

Non sembra semplice disabilitare la memorizzazione/memorizzazione dei codici host in modo da non dover modificare ~/.ssh/known_hosts ogni volta che è necessario connettersi a un sistema.

Non mi interessa l'autenticità dell'host, sono tutti sul segmento di rete 10.x.x.x e sono relativamente certo che nessuno mi sta MITM.

Esiste un modo "corretto" per farlo? Non mi interessa se mi avvisa, ma fermarmi e farmi scaricare ogni volta la mia voce known_hosts per quell'IP è fastidioso e in questo scenario non fornisce alcuna sicurezza perché raramente mi collego ai sistemi più di una volta o due e quindi l'IP viene assegnato a un altro sistema.

Ho cercato nel file ssh_config e ho visto che posso impostare i gruppi in modo che la sicurezza della connessione a macchine esterne possa essere preservata e potrei semplicemente ignorare il controllo degli indirizzi locali. Questo sarebbe ottimale.

Dalla ricerca ho trovato alcune opinioni molto forti sull'argomento, che vanno da "Non scherzare, è per la sicurezza, basta affrontarlo" a "Questa è la cosa più stupida che abbia mai avuto a che fare con, voglio solo spegnerlo "... Sono da qualche parte nel mezzo. Voglio solo essere in grado di svolgere il mio lavoro senza dover eliminare un indirizzo dal file ogni pochi minuti.

Grazie.

risposta

9

Supponendo che si sta utilizzando OpenSSH, credo che si può impostare l'opzione

CheckHostIP no 

per evitare che gli IP di host di essere controllato in known_hosts. Dalla pagina man:

CheckHostIP

Se questo flag è impostato su 'sì', ssh (1) controllerà inoltre l'host IP indirizzo nel file known_hosts. Questo consente a ssh di rilevare se una chiave host è stata modificata a causa dello spoofing DNS. Se l'opzione è impostata su "no", il controllo non sarà eseguito . L'impostazione predefinita è "sì".

+0

ho aggiunto una sezione alla fine del file di configurazione con l'ospite 10.0.0. * E sotto che ho messo nessun CheckHostIP Sai se ho bisogno di mettere tutte le altre impostazioni lì o se questo è in aggiunta all'host * sopra? Dovrò aspettare fino al log in un sistema che è stato rilasciato un indirizzo IP "usato" per assicurarsi che questa modifica funzioni. Accetterò la tua risposta se funziona. Grazie. – C4colo

+0

Non sembra questo il trucco al 100% ... non so perché, dovrò giocarci un po 'di più e vedere se riesco a farlo fare quello che voglio. – C4colo

+0

Cosa intendi con "100%"? Funziona a volte ma non altri? –

80

Questa è la configurazione che uso per i nostri mutevoli host EC2:

[email protected]:~$ cat ~/.ssh/config 
Host *amazonaws.com 
     IdentityFile ~/.ssh/keypair1-openssh 
     IdentityFile ~/.ssh/keypair2-openssh 
     User ubuntu 
     StrictHostKeyChecking no 
     UserKnownHostsFile /dev/null 

Questo disabilita conferma ospite StrictHostKeyChecking no e utilizza anche un bel trucco per evitare che ssh di salvare l'host di identificare in un file permanente UserKnownHostsFile /dev/null nota che come valore aggiunto ho aggiunto l'utente predefinito con cui connettersi all'host e l'opzione per provare diverse chiavi private di identificazione diverse.

+1

Wow, che/dev/null hack è geniale. Ho sempre dimenticato come ovviamente le cose semplici possano essere su Linux. Grazie. – C4colo

+7

Se questa soluzione funziona per te, accetta una risposta valida come risposta a questa domanda, ricorda che le altre persone visiteranno questa pagina di domande. Se qualcosa non funziona ancora per te, pubblica un'altra domanda nei commenti. –

+2

Se imposto UserKnownHostsFile su/dev/null, ricevo questo avviso ogni volta 'Avviso: aggiunto definitivamente '10 .9.8.7' (RSA) all'elenco di host conosciuti. ' Un modo per disattivarlo? –

8

Questo mi ci è voluto un po 'per trovare. Il caso d'uso più comune che ho visto è quando hai tunnel SSH su reti remote. Tutte le soluzioni qui hanno prodotto avvertimenti che hanno infranto le mie sceneggiature Nagios.

L'opzione avevo bisogno era:

NoHostAuthenticationForLocalhost yes 

Il che, come suggerisce il nome anche solo vale per localhost.

2

Se si desidera disabilitare questa temporanea o senza la necessità di modificare i file di configurazione SSH, è possibile utilizzare:

ssh -o UserKnownHostsFile=/dev/null [email protected] 
Problemi correlati