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
Code-Sprache: Bash (bash)
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'
Code-Sprache: Bash (bash)
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
super ,war sehr hilfreich.
Danke
Moin,
hat mir nach langem probieren auch geholfen.
Ein Hinweis darauf das man das in seinem Terminal so eingeben wäre gut gewesen.
Nach dem ich in der Eingabeaufforderung
(der PC-Name des Terminal)> ssh-keygen -R (hier die IP Adresse des Server) eingegeben hab,
konnte ich mich wieder neu einloggen 😉
super, war sehr sehr hilfreich.
den Befehl einfach mit der Ip-adresse für den einzuloggenden Teilnehmer im Terminal eingeben und schon kann man sich wieder eiloggen.