Come posso saltare la domanda "known_host" la prima volta che mi collego a una macchina tramite SSH con chiavi pubbliche / private? [duplicare]


Risposte:


31

Tutte le altre risposte correnti mancano UserKnownHostsFile = / dev / null

Se vuoi farlo solo una volta puoi usare:

ssh -o StrictHostKeychecking=no hostname

Se vuoi farlo ripetutamente dovresti aggiungere qualcosa come il seguente al tuo ~ / .ssh / config

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

Per configurarlo su OpenSSH per Windows, è sufficiente sostituirlo /dev/nullcon NUL.

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


2
Ho cercato via per filtrare una sottorete per mesi (non attivamente), questo è esattamente quello che volevo. Abbiamo una piccola rete di sviluppo con dhcp e i nostri dispositivi ricevono sempre un nuovo indirizzo IP, questo rende la connessione a MOLTO più semplice. Grazie!
Adam Lewis,

13

Girare StrictHostKeyCheckinga via ssh_configo le opzioni della riga di comando.


/ etc / ssh / ssh_config o ~ / .ssh / config --- o qualunque sia l'equivalente su Windows se questa è la tua piattaforma client
Doug Harris,

3

Puoi ottenere la chiave pubblica, aggiungerla al file known_hosts e quindi ripassarla:

ssh-keyscan -t rsa hostname >> .ssh/known_hosts
ssh-keygen -H
rm .ssh/known_hosts.old

2
$ ssh -o StrictHostKeychecking=no hostname

Ciò farà saltare il controllo e la chiave dell'host remoto verrà aggiunta automaticamente al primo accesso. (C'è anche l'opzione CheckHostIP, ma non sembra effettivamente disabilitare la verifica dell'esistenza di una chiave).


2
Mi piace anche usare UserKnownHostsFile in modo che la firma non venga memorizzata sul mio sistema. Un bel trucco:ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeychecking=no hostname
metavida

2

Mi ci è voluto un po 'di tempo per trovarlo. 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 rotto i miei script (nagios).

L'opzione di cui avevo bisogno era:

NoHostAuthenticationForLocalhost yes

Che, come suggerisce il nome, si applica anche solo a localhost.


0

Puoi disabilitare il controllo, ma ovviamente è meno sicuro. In una situazione ideale quello che dovresti fare è convincere qualcuno che ha già accesso alla macchina a prendere la sua chiave host pubblica e dire a ssh di usarla. vale a dire: prendere l'output di:

cat /etc/ssh/ssh_host_rsa_key.pub

anteporre il nome host della macchina e aggiungere quella riga al file ~ / .ssh / known_hosts sulla macchina. Finirai con qualcosa che assomiglia a:

myhost.example.com ssh-rsa AAAAB3Netc ...

In alternativa, se vuoi semplicemente catturare l'impronta digitale della chiave, che potrebbe essere più facile da trasferire su un canale a larghezza di banda limitata (come una telefonata), puoi far funzionare il tuo aiutante:

ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

0

Se si desidera solo disabilitare temporaneamente il controllo host, in modo da poter accedere a un sistema LiveCD, ad esempio, rinominare ~/.ssh/known_hostsin qualcos'altro e quindi ripristinarlo al termine.


-2
  1. Aggiungi "StrictHostKeyChecking no" a / etc / ssh / ssh_config
  2. cd ~ / .ssh
  3. rm known_hosts
  4. ln -s / dev / null known_hosts

tombola


1
Sai che tipo di attacco questa domanda dovrebbe prevenire, vero?
vonbrand
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.