it-swarm.com.de

Wie kann ich ssh zwingen, einen neuen Host-Fingerabdruck über die Befehlszeile zu akzeptieren?

Ich bekomme den Standard 

WARNING: REMOTE Host IDENTIFICATION HAS CHANGED!
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA Host key has just been changed.
The fingerprint for the RSA key sent by the remote Host is

fehlermeldung. Das System (Appworx), das den Befehl ausführt (sftp denke ich nicht, dass es darauf ankommt), ist jedoch automatisiert und ich kann den neuen Schlüssel nicht ohne weiteres akzeptieren, auch wenn ich mich beim Drittanbieter erkundigt habe, dass es eine gültige Änderung ist. Ich kann ein neues Shell-Skript hinzufügen, das ich von demselben System (und demselben Benutzer) ausführen kann, aber es scheint keinen Befehl oder Befehlszeilenargument zu geben, das ssh anweist, den Schlüssel zu akzeptieren. Ich kann nichts auf der Manpage oder bei Google finden. Sicher ist das möglich?

18
John O

So können Sie Ihrem Client sagen, dass er dem Schlüssel vertraut. Ein besserer Ansatz ist, ihm den Schlüssel vorab zu geben, den ich im zweiten Absatz beschrieben habe. Dies ist für einen OpenSSH-Client unter Unix, daher hoffe ich, dass es für Ihre Situation relevant ist.

Sie können den Parameter StrictHostKeyChecking einstellen. Es hat die Optionen yes, no und ask. Der Standardwert ist ask. Um es systemweit festzulegen, bearbeiten Sie /etc/ssh/ssh_config; Um es nur für Sie festzulegen, bearbeiten Sie ~/.ssh/config; Um es für einen einzelnen Befehl festzulegen, geben Sie die Option in der Befehlszeile ein, z.

ssh -o "StrictHostKeyChecking no" hostname

Wenn Sie Zugriff auf die Host-Schlüssel für das Remote-System haben, können Sie diese zuvor in Ihre known_hosts-Datei einfügen, damit SSH über sie Bescheid weiß und die Frage nicht stellt. Wenn dies möglich ist, ist es aus Sicherheitsgründen besser. Schließlich könnte die Warnung richtig sein und Sie könnten tatsächlich einem Man-in-the-Middle-Angriff ausgesetzt sein.

Hier ist zum Beispiel ein Skript, das den Schlüssel abruft und der Datei known_hosts hinzufügt:

ssh -o 'StrictHostKeyChecking no' hostname cat /etc/ssh/ssh_Host_dsa_key.pub >>~/.ssh/known_hosts
25
Peter Westlake

Die Antworten hier sind schreckliche Ratschläge. Sie sollten StrictHostKeyChecking niemals in einem realen System ausschalten (z. B. ist es wahrscheinlich in Ordnung, wenn Sie nur in Ihrem lokalen Heimnetzwerk spielen - aber für alles andere nicht).

Verwenden Sie stattdessen:

ssh-keygen -R hostname

Dadurch wird die Aktualisierung der known_hosts-Datei erzwungen, um den alten Schlüssel nur für den Server zu entfernen, der seinen Schlüssel aktualisiert hat.

Wenn Sie dann verwenden:

ssh [email protected]

Sie werden aufgefordert, den Fingerabdruck zu bestätigen - wie bei jedem anderen "neuen" (d. H. Zuvor nicht gesehenen) Server.

6
AJ Poulter

Da Sie versuchen, dies zu automatisieren, indem Sie ein Bash-Skript auf dem Host ausführen, der das ssh-ing ausführt, und davon ausgehen, dass:

  • Sie möchten Host-Schlüssel nicht ignorieren, da dies ein zusätzliches Sicherheitsrisiko darstellt.
  • Host-Schlüssel auf dem Host, den Sie selten ändern möchten, und wenn ja, gibt es einen guten, bekannten Grund wie "Der Ziel-Host wurde neu erstellt".
  • Sie möchten dieses Skript einmal ausführen, um den neuen Schlüssel zu known_hosts Hinzuzufügen, und dann known_hosts In Ruhe lassen.

Versuchen Sie dies in Ihrem Bash-Skript:

# Remove old key
ssh-keygen -R $target_Host

# Add the new key
ssh-keyscan $target_Host >> ~/.ssh/known_hosts
4
Earl Ruby

Fügen Sie folgende Datei hinzu

~/.ssh/config

und dies in der Datei als Inhalt

StrictHostKeyChecking no

Mit diesen Einstellungen wird sichergestellt, dass ssh nie mehr zur Überprüfung des Fingerabdrucks auffordert.