So akzeptieren Sie SSH-Hostschlüssel automatisch unter Linux
Wenn Sie zum ersten Mal eine Verbindung zu einem SSH-Server herstellen, wird Ihnen ein Fingerabdruck und ein Hash des vollständigen Hostschlüssels angezeigt und Sie werden aufgefordert, dessen Gültigkeit zu bestätigen und den Hostschlüssel zu akzeptieren. Nach der Bestätigung wird der Hostschlüssel zur Datei ~/.ssh/known_hosts
hinzugefügt. In einer kontrollierten Umgebung, in der die Authentizität von SSH-Hosts bereits bekannt ist (z. B. lokale VMs), möchten Sie möglicherweise einen neuen Hostschlüssel automatisch und ohne Prüfung akzeptieren. Dies ist nützlich, wenn Sie ssh
/scp
in einem nicht interaktiven Stapelverarbeitungsskript verwenden.
In diesem Beitrag beschreibe ich, wie man SSH-Hostschlüssel unter Linux automatisch akzeptiert.
Mit dem Befehl ssh
können Sie die Befehlszeilenoption -oStrictHostKeyChecking=[yes|no]
verwenden, um die Überprüfung des SSH-Hostschlüssels zu aktivieren oder zu deaktivieren. Führen Sie Folgendes aus, um eine SSH-Verbindung ohne strenge Überprüfung des Hostschlüssels herzustellen.
$ ssh -oStrictHostKeyChecking=no [email _host
In diesem Fall werden Sie nicht aufgefordert, einen Hostschlüssel zu akzeptieren. Beachten Sie, dass möglicherweise immer noch die folgende Warnmeldung angezeigt wird, wenn der Hostschlüssel nicht mit einem zuvor hinzugefügten Hostschlüssel desselben Hosts übereinstimmt.
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED
Wenn Sie keine solche Warnung wünschen, können Sie die Option -oUserKnownHostsFile=/dev/null
verwenden, die dafür sorgt, dass ssh
~/.ssh/known_hosts nicht verwendet
und lässt so solche Warnungen verschwinden.
$ ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null [email _host
Wenn Sie die strikte Überprüfung des Hostschlüssels dauerhaft in SSH deaktivieren möchten, können Sie eine SSH-Konfigurationsdatei verwenden (d. h. ~/.ssh/config
oder /etc/ ssh/ssh_config
). In diesem Fall können Sie die Überprüfung des SSH-Hostschlüssels für bestimmte Hosts selektiv deaktivieren. Fügen Sie beispielsweise Folgendes zu ~/.ssh/config
oder /etc/ssh/ssh_config
hinzu.
So deaktivieren Sie die Überprüfung des Hostschlüssels für einen bestimmten Host (z. B. remote_host.com
):
Host remote_host.com
StrictHostKeyChecking no
So deaktivieren Sie die Hostschlüsselprüfung für alle Hosts, mit denen Sie eine Verbindung herstellen:
Host *
StrictHostKeyChecking no
Um die Überprüfung des Hostschlüssels zu vermeiden und die Datei „known_hosts“ nicht für das Subnetz 192.168.1.*
zu verwenden:
Host 192.168.0.*
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null