Prawdopodobnie każdy, kto korzystał trochę dłużej z SSH spotkał się z podobnym komunikatem, występujący przy próbie połączenia z wybranym serwerem:

$ ssh server.example.com
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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
63:6a:1e:ef:1a:a8:44:c4:46:ce:d1:97:b1:f3:7a:29.
Please contact your system administrator.
Add correct host key in /home/lukasz/.ssh/known_hosts to get rid of this message.
Offending key in /home/lukasz/.ssh/known_hosts:44
RSA host key for server.example.com has changed and you have requested strict checking.
Host key verification failed.

Pojawienie się go może świadczyć o tym że:

  1. Jesteśmy własnie w obiektem ataku Men in the middle (informacja o tym znajduje się w treści komunikatu).
  2. Klucz serwera z którym chcemy się połączyć uległ zmianie (czyli np. jest to inna maszyna, wygenerowano go ponownie).

Jeżeli wiemy, że mamy do czynienia z sytuacją drugą, to będziemy chcieli zaktualizować odpowiedni klucz i dalej łączyć się z wybraną maszyną.

Najprościej odcisk klucza zmienić poprzez usunięcie odpowiedniego wpisu i ponowne połączenie się z wybraną maszyną. Usuwamy klucz na dwa sposoby:

  • przy użyciu polecenia ssh-keygen:
    $ ssh-keygen -R server.example.com

    Polecenie to spowoduje wszystkich wpisów związanych z danym serwerem z pliku ~/.ssh/known_hosts.

  • ręcznie usuwając odpowiednią linijkę z pliku ~/.ssh/known_hosts. Tutaj może pojawić się problem, ponieważ w nowych wersjach SSH nazwy hostów zostały zakodowane przy użyciu funkcji skrótu. Z pomocą przychodzi tutaj powyższy komunikat błędu, pojawia się tam informacja o linii która sprawia problem:
    Offending key in /home/lukasz/.ssh/known_hosts:44

    Czyli wystarczy otworzyć podany plik i usunąć wybraną linie i po sprawie.

Metoda, która się wybierze zależy od nas, ale warto pamiętać o możliwościach polecenia ssh-keygen. Może się przypadać podczas tworzenia skryptów, lub gdy chcemy usunąć informacje wszystkich kluczach skojarzonych z danym serwerem.

Źródła

Tags: , , , ,