Come posso evitare la verifica dell'host di SSH per host noti?


170

Ricevo il seguente prompt ogni volta che provo a connettere un server usando SSH. Digito "sì", ma c'è un modo per evitare questo?

The authenticity of host '111.222.333.444 (111.222.333.444)' can't be established.
RSA key fingerprint is f3:cf:58:ae:71:0b:c8:04:6f:34:a3:b2:e4:1e:0c:8b.
Are you sure you want to continue connecting (yes/no)? 

8
/ dev / null esiste per coloro che pensano di essere immuni all'uomo in mezzo agli attacchi :)
Tim Post

1
Parte peggiore: digitare yper risparmiare un po 'di tempo e si lamenta: Please type 'yes' or 'no': (hmph)
ADTC

Risposte:


235

Usa l' -oopzione,

ssh -o "StrictHostKeyChecking no" user@host

1
Potresti voler utilizzare un file di identità alternativo con la bandiera '-i'
MUY Belgio,

A che serve usare un file di identità alternativo? Voglio dire, se ti connetti a un host compromesso, che differenza fa il modo in cui esegui l'autenticazione, non è come se l'host compromesso possa rubare anche la tua chiave.
Dagelf,

102

Aggiungi le seguenti righe all'inizio di /etc/ssh/ssh_config...

Host 192.168.0.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null

Opzioni:

  • La sottorete Host può essere *per consentire l'accesso senza restrizioni a tutti gli IP.
  • Modifica /etc/ssh/ssh_configper la configurazione globale o ~/.ssh/configper la configurazione specifica dell'utente.

Vedi http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html


2
Peccato che posso votarti solo una volta. Impostare KnownHosts su / dev / null è geniale.
J0hnG4lt

1
Sei il più intelligente.
Darth Egregious,

30
Ha! Dillo a mia moglie.
JimFred,

30

Dovresti ottenerlo solo la prima volta che ti connetti a un nuovo host. Dopo aver risposto, yesl'host viene archiviato ~/.ssh/known_hostse non ti verrà richiesto alla successiva connessione.

Nota che se ~/.ssh/known_hostsnon è possibile scrivere per qualsiasi motivo (ad es. Problema di autorizzazioni), ti verrà richiesto ogni volta che ti connetti.


7
La domanda è c'è comunque per evitare il prompt?
shantanuo,

Ho provato ad aggiungere "CheckHostIP no" al file / etc / ssh / ssh_config. Ma non sembra funzionare
shantanuo il

2
sudo chown -R utente: utente .ssh; sudo chmod 700 .ssh; sudo chmod -R 600 .ssh /; ssh-keygen -R $ nomehost e riconnetti che dovrebbe eliminare TUTTI i problemi e SOLTANTO richiedere nuovamente se un ssk_Hostkey è bloccato con | cambiato o sei vittima di un MITM.
linuxdev2013,

1
dice "ogni volta" quindi questa risposta è super appropriata
tarikakyol il

12

Il modo migliore (perché non sacrifica la sicurezza) è connettersi una volta a tutti i computer da un client (ti verrà chiesto ogni volta, rispondi sempre sì). Come indicato nell'altra risposta, le chiavi verranno quindi memorizzate in ~ / .ssh / known_hosts. Quindi copia questo file su ogni computer client da cui potresti voler successivamente connetterti (possibilmente per ogni account utente che usi). Quindi tutti questi account "conosceranno" i computer, quindi nessun prompt.

Il vantaggio rispetto alla semplice disabilitazione del prompt è che SSH può effettivamente verificare se esiste un attacco MITM.


1
Anche se, se usi spesso connessioni dirette, vorrai aggiungerlo a / etc / ssh / ssh_config: Host 127.0.0.1 NoHostAuthenticationForLocalhost yes
Dagelf

1

Se si desidera disabilitare la conferma, anziché l'autenticazione, è possibile utilizzare l'opzione: "-o CheckHostIP = no"

ssh -i sergeys_rsa_key.pem -o CheckHostIP=no brin@8.8.8.8

L'OP ha già ottenuto la stessa risposta e l'ha accettata.
Ayan,

0

Ciò è probabilmente dovuto al fatto che il tuo server delle chiavi ssh è cambiato, poiché l'ip o il dominio del server è lo stesso ma la mancata corrispondenza della chiave ssh.

È necessario rimuovere la chiave memorizzata /home/$user/.ssh/known_hostsper evitare questo messaggio.

L'ho risolto rimuovendo tutte le chiavi in ​​quel file, quindi viene creato un nuovo token per questo nome di dominio.


1
La chiave modificata produce un messaggio molto più brutto con una casella di segni distintivi WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! e IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!in maiuscolo. Il messaggio in questione si verifica solo se v'è non già una voce in known_hosts.
dave_thompson_085,

-1

Controlla le autorizzazioni sul tuo ~/.ssh/known_hostsfile. I miei erano errati quando ho avuto questo problema. L'ho risolto con:

chmod 0600 ~/.ssh/known_hosts
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.