
Ich verwende ein Tool, das für die Verbindung mit einem Remote-Host auf SSH angewiesen ist. Leider akzeptiert dieses Tool keine Benutzereingaben und wenn der Remote-Host-Schlüssel unbekannt ist, bleibt der Aufruf für immer hängen. Gibt es eine Option oder einen Satz von Optionen, die dafür sorgen, dass der SSH-Aufruf fehlschlägt, wenn der Remote-Host-Schlüssel unbekannt ist?
Antwort1
-o StrictHostKeyChecking=yes
Zum Aufruf verwenden ssh
:
Wenn dieses Flag auf „yes“ gesetzt ist, fügt ssh(1) niemals automatisch Hostschlüssel zur Datei ~/.ssh/known_hosts hinzu und verweigert die Verbindung zu Hosts, deren Hostschlüssel sich geändert hat.
Die Standardeinstellung ist ask
und deshalb liegt ein Problem vor:
Wenn dieses Flag auf „Fragen“ gesetzt ist (Standard), werden neue Hostschlüssel erst dann zu den dem Benutzer bekannten Hostdateien hinzugefügt, wenn der Benutzer bestätigt hat, dass er dies wirklich tun möchte. Außerdem verweigert SSH die Verbindung zu Hosts, deren Hostschlüssel sich geändert hat.
Antwort2
Als Workaround können Sie selbst überprüfen, ob der Host vertrauenswürdig ist:
$ ssh-keygen -H -F host.example.com
# Host host.example.com found: line 205 type RSA
...
Beachten Sie, dass ssh-keygen hier in jedem Fall mit 0 beendet wird, Sie müssen also die Ausgabe überprüfen:
ssh-keygen -H -F host.example.com |
grep -q found: || echo "host is not trusted" && exit 2
Antwort3
Sie können es verwenden -oBatchMode=yes
, um Fehler zu beheben, wenn eine Benutzerinteraktion erforderlich ist (z. B. Abfrage eines Kennworts, Überprüfen des Remote-Host-Schlüssels usw.).
Antwort4
Sie können in ~/.ssh/config Standardoptionen hinzufügen, beispielsweise:
Host *
StrictHostKeyChecking no
Dadurch wird die SSH-Meldung über unbekannte oder geänderte Hostschlüssel deaktiviert.
Sie können diese Optionen auf eine Reihe von Hosts beschränken, indem Sie ein entsprechendes Hostmuster angeben.