Erzwingen Sie, dass ssh die Warnung "Remote-Host-Identifikation hat sich geändert" nicht druckt

23

Gibt es eine Möglichkeit, ssh-Warnungen wie diese zu vermeiden?

"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r",
"@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @\r",
"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r",

Obwohl sich die Identität des Remote-Hosts geändert hat, weiß ich, dass dies in Ordnung ist, und möchte diese Warnung einfach loswerden.

Kaffeebecher
quelle

Antworten:

16

Vier Möglichkeiten:

Wenn Sie mit einem neuen Host-Schlüssel nur einmal eine Verbindung zu einem System herstellen möchten, ohne Fragen beantworten zu müssen, verwenden Sie die folgende Option:

ssh -q -o "StrictHostKeyChecking no" this.one.host.name

Um die Warnung für alle Systeme dauerhaft zu entfernen , bearbeiten Sie Ihre ~/.ssh/configDatei, und fügen Sie die folgenden Zeilen hinzu:

Host *
StrictHostKeyChecking no

Um alle Warnungen für diesen einen Server dauerhaft zu entfernen , bearbeiten Sie Ihre ~/.ssh/configDatei und fügen Sie die folgenden Zeilen hinzu:

Host this.one.hostname
StrictHostKeyChecking no  

Um die Warnung für diese eine Änderung für diesen einen Server zu entfernen, entfernen Sie den Hostschlüssel für diesen Server von ~/.ssh/known_hosts. Wenn Sie das nächste Mal eine Verbindung herstellen, wird der neue Hostschlüssel hinzugefügt.

Jenny D
quelle
In der zweiten Option muss diese Konfiguration auf der Serverseite vorgenommen werden, zu der wir eine Verbindung herstellen, oder?
Kaffeebecher
Nein, es ist Ihre eigene $HOME/.ssh/config, die sowohl bei der zweiten als auch bei der dritten Option eine Rolle spielt.
Jenny D
Dies gibt immer noch eine Warnung für mich aus (obwohl dies die Verbindung zulässt).
Michael Mior
24

Fügen Sie dies zu Ihrer ~ / .ssh / config hinzu:

Host 10.*                            # use your own pattern here, eg. *.example.com, example.*.com
  StrictHostKeyChecking   no         # turn off the HostKey check                                                               
  LogLevel                ERROR      # keep it from printing to STDOUT
  UserKnownHostsFile      /dev/null  # (optional) add the host automatically to a black hole, otherwise it would be added to ~/.ssh/known_hosts and show you a warning/message at the top of your session. You may want it added to known_hosts if your shell uses `ssh` autocompletion, such as fish. 
Elijah Lynn
quelle
3
MOD UP - nur einer, der die Frage tatsächlich beantwortete - dies war die einzige Antwort, um nicht nur zu arbeiten, sondern die WARNHINWEISE ZU UNTERDRÜCKEN.
Brad
Hoppla, es scheint, dass Benutzer von fish shell die nette automatische Vervollständigung von ssh für zuvor verbundene Hosts nicht verwenden können, wenn sie UserKnownHostFile auf / dev / null setzen. Fischbenutzer und möglicherweise jeder sollte das nicht einstellen.
Elijah Lynn
Sie sollten ein ssh0Skript / einen Alias ​​/ eine Funktion dafür erstellen ssh -o UserKnowHostsFile=/dev/null -o LogLevel=ERRORund diese ausdrücklich verwenden, anstatt diese Optionen zu speichern ~/.ssh/config. Sie können sie vergessen und sich dann fragen, warum die Überprüfungen nicht funktioniert haben, als Sie nur wollten, dass sie funktionieren.
Onkel Billy
20

Sie können die Leitung für diesen Host herausnehmen ~/.ssh/known_host(jeder Host hat dort eine Leitung als Eintrag).

Alternative ist zu verwenden:

ssh -q -o "StrictHostKeyChecking no" ....

Nur zu benutzen, -qwäre sshlautlos gescheitert.

Timo
quelle
9

Manchmal ist es wünschenswert, Host-Schlüssel nicht zu den Standard-$ HOME / .ssh / known_hosts hinzuzufügen.

Verwenden Sie -o UserKnownHostsFile=/dev/nullzusätzlich zu -qund -o StrictHostKeyChecking=no, um known_hosts übersichtlich zu halten. Hier ist ein Beispiel:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -q [email protected]
Schlauer Typ
quelle
2

Ein alternativer Vorschlag besteht darin, festzustellen, warum sich der Hostschlüssel ändert, und ihn dazu zu bringen, dies zu unterbrechen.

Beispiel: Wenn Sie Hosts in Containern oder über ein Bereitstellungssystem erstellen, stellen Sie sicher, dass diese konsistent denselben bekannten Hostschlüssel pro Instanz verwenden.

Mir ist durchaus bewusst, dass dies nicht immer möglich ist und Hosts möglicherweise außerhalb Ihres Einflussbereichs verwaltet werden. Diese Warnungen zu Hostschlüsseln sind jedoch aus einem bestimmten Grund vorhanden und von Bedeutung. Das Reduzieren der Ausnahmezahl ist eine gute Sache.

Andernfalls stimme ich für StrictHostKeyChecking Nein in Ihrem Namen nur ~/.ssh/config für den betreffenden Host.

Dr. Edward Morbius
quelle