Wie überspringe ich die Frage „known_host“, wenn ich mich zum ersten Mal über SSH mit öffentlichen / privaten Schlüsseln mit einem Computer verbinde? [Duplikat]

Antworten:

31

Allen anderen aktuellen Antworten fehlt die UserKnownHostsFile = / dev / null

Wenn Sie es nur einmal tun möchten, können Sie Folgendes verwenden:

ssh -o StrictHostKeychecking=no hostname

Wenn Sie es wiederholt ausführen möchten, sollten Sie Ihrer ~ / .ssh / config Folgendes hinzufügen

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

Um dies zu konfigurieren auf OpenSSH für Windows einfach ersetzen /dev/nullmit NUL.

Gute Erklärung von: http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

Jason Axelson
quelle
2
Ich habe monatelang nach Abwesenheit gesucht, um ein Subnetz herauszufiltern (nicht aktiv), genau das habe ich mir gewünscht. Wir haben ein kleines Entwicklungsnetzwerk mit DHCP und unsere Geräte erhalten immer neue IP-Adressen, was die Verbindung zu ihnen VIEL einfacher macht. Vielen Dank!
Adam Lewis
13

Deaktivieren StrictHostKeyCheckingSie über ssh_configoder Befehlszeilenoptionen.

Chaos
quelle
/ etc / ssh / ssh_config oder ~ / .ssh / config --- oder was auch immer das Äquivalent unter Windows ist, wenn dies Ihre Client-Plattform ist
Doug Harris
3

Sie können den öffentlichen Schlüssel abrufen, zur Datei known_hosts hinzufügen und ihn dann erneut speichern:

ssh-keyscan -t rsa hostname >> .ssh/known_hosts
ssh-keygen -H
rm .ssh/known_hosts.old
egridasov
quelle
2
$ ssh -o StrictHostKeychecking=no hostname

Dadurch wird die Prüfung übersprungen und der Schlüssel des Remote-Hosts wird beim ersten Anmelden automatisch hinzugefügt. (Es gibt auch die Option CheckHostIP, aber sie scheint die Prüfung, ob überhaupt ein Schlüssel vorhanden ist, nicht zu deaktivieren.)

Nelson
quelle
2
Ich verwende auch gerne UserKnownHostsFile, damit die Signatur auf meinem System nicht gespeichert wird. Ein schöner Trick:ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeychecking=no hostname
Metavida
2

Ich brauchte eine Weile, um zu finden. Der häufigste Anwendungsfall, den ich gesehen habe, ist der, wenn Sie SSH-Tunnel zu Remotenetzwerken verwenden. Alle Lösungen hier erzeugten Warnungen, die meine Skripte (Nagios) brachen.

Die Option, die ich brauchte, war:

NoHostAuthenticationForLocalhost yes

Was, wie der Name schon sagt, auch nur für localhost gilt.

richo
quelle
0

Sie können die Überprüfung deaktivieren, aber das ist natürlich weniger sicher. In einer idealen Situation sollten Sie jemanden, der bereits Zugriff auf die Maschine hat, bitten, den öffentlichen Host-Schlüssel abzurufen und ssh mit der Verwendung zu beauftragen. dh: nimm die Ausgabe von:

cat /etc/ssh/ssh_host_rsa_key.pub

Stellen Sie den Hostnamen des Computers voran und fügen Sie diese Zeile der Datei ~ / .ssh / known_hosts auf Ihrem Computer hinzu. Sie werden mit etwas enden, das wie folgt aussieht:

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

Alternativ können Sie Ihren Helfer ausführen lassen, wenn Sie nur den Fingerabdruck des Schlüssels erfassen möchten, der möglicherweise einfacher über einen Kanal mit begrenzter Bandbreite zu übertragen ist (wie ein Telefonanruf):

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

quelle
0

Wenn Sie die Hostüberprüfung nur vorübergehend deaktivieren möchten, können Sie sich beispielsweise bei einem LiveCD-System anmelden, in einen ~/.ssh/known_hostsanderen Namen umbenennen und diesen nach Abschluss wieder ändern.

Endolith
quelle
-2
  1. Fügen Sie "StrictHostKeyChecking no" zu / etc / ssh / ssh_config hinzu
  2. cd ~ / .ssh
  3. rm known_hosts
  4. ln -s / dev / null bekannte_Hosts

Bingo

Cliff Kennedy
quelle
1
Sie wissen, welche Art von Angriff diese Frage verhindern soll, oder?
Vonbrand