# offending key aus known_hosts löschen Welcher Linux-Admin kennt es nicht. Ein Server wurde neu installiert oder der SSH-Hostkey hat sich geändert und jetzt wird beim Versuch sich einzuloggen folgende Meldung angezeigt:
``` @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 1a:d4:e6:4f:1a:4f:61:ef:bc:b8:37:a3:22:d9:70:40. Please contact your system administrator. Add correct host key in /home/user/.ssh/known_hosts to get rid of this message. Offending key in /home/user/.ssh/known_hosts:898 RSA host key for meinserver has changed and you have requested strict checking. Host key verification failed. ```
Um sich nun wieder mit dem Ziel verbinden zu können, muss der alte Hostkey aus der known\_hosts Datei entfernt werden. Die einfachste Methode ist mit einem kleinen Helper-Script:
``` #!/bin/bash # 2010 Oliver Voelker # # delete the given line number from ~/.ssh/known_hosts # if [ ${1} -gt 0 ]; then echo "Deleting line ${1} from ~/.ssh/known_hosts" sed -i "${1}d" ~/.ssh/known_hosts else echo "Clear from ~/.ssh/known_hosts" echo "Usage: ${0} " fi   exit 0 ```
Einfach in ~/bin oder /usr/local/bin ablegen. Beim Aufruf des Scripts einfach die angemeckerte Zeilennummer angeben (z.B. „ck 898“) und die betreffende Zeile wird aus der Datei gelöscht. Sollte euer Sed keine -i Option besitzen, kann die Zeile etwa auch durch Perl entfernt werden:
``` perl -ni -e ‘print if ($. != 898);~/.ssh/known_hosts ```
Alternativ über den VI-Editor:
``` vi +898d +x ~/.ssh/known_hosts ```
und es gibt sicherlich noch viele weitere Methoden da draußen ;)