Fehlermeldung beim SSH-Login: Host key verification failed

Diese Fehlermeldung tritt unter Linux und OS X auf, wenn ihr versucht euch per SSH an einem Server anzumelden, bei dem sich seit dem letzten Login der RSA-Key geändert hat.

Der Sinn dahinter ist, dass dies der eigenen Sicherheit dient und einen Man-In-The-Middle Angriff verhindern soll. Dennoch ist die Fehlermeldung lästig, wenn man selbst beispielsweise den Server neu aufgesetzt hat und nun draußen bleiben muss.

Entscheidend ist die Datei ~/.ssh/known_hosts, in der alle Public-Keys der Server gespeichert sind, mit denen ihr euch bereits über SSH verbunden habt. Es gibt es 3 Möglichkeiten mit denen ihr euch dennoch mit dem Server verbinden könnt:

Möglichkeit 1: Known Hosts löschen

Mit $ rm ~/.ssh/known_hosts wird die Hosts Datei gelöscht und ihr könnt euch wieder verbinden. Der Nachteil hierbei ist, dass auch die Keys von allen anderen Servern verloren gehen, mit denen ihr verbunden wart. Dies führt dazu, dass ihr auch bei Verbindungsversuchen auf andere Server wieder den Dialog Are you sure you want to continue connecting (yes/no)? bestätigen müsst. Außerdem bekommt ihr es nicht mit, falls ein anderer Server einen böswilligen Key einsetzt. Daher würde ich diese Variante nicht empfehlen.

Möglichkeit 2: SSH-Keygen

Der Befehl $ ssh-keygen -R hostname löscht in der Known Hosts Datei nur den Eintrag eines einzigen Hosts. In diesem Fall den von hostname. Da diese Methode schnell und effektiv ist, würde ich sie empfehlen.

Möglichkeit 3: Key Überprüfung deaktivieren

Für die ganz Bequemem gibt es eine dritte Möglichkeit. Obwohl es eigentlich nicht vorgesehen ist, den Key Check zu deaktivieren, funktioniert es dennoch mit einem Trick:

ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no nonroot@example.com

Hierbei wird der Speicherort der Known Hosts Datei auf /dev/null gelegt. Die Datei ist also immer leer und es können somit keine falschen Keys drinstehen. Durch das Setzen von StrictHostKeyChecking=no wird der Key automatisch zur Known Hosts Datei hinzugefügt, ohne das der User vorher gefragt wird. Dank der beiden Parameter wird der Key Check effektiv deaktiviert.

Um diese Zeile nicht jedesmal eingeben zu müssen, ist es möglich den SSH-Befehl abzukürzen, indem man der ~/.bash_profile-Datei folgende Zeile hinzufügt:

alias ssh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'

Hierdurch wird die Überprüfung automatisch bei jeder Eingabe von $ ssh deaktiviert. Wie sinnvoll es ist die Überprüfung zu übergehen muss jeder für sich entscheiden.

Kommentare