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:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ 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:
- Jesteśmy własnie w obiektem ataku Men in the middle (informacja o tym znajduje się w treści komunikatu).
- 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.comPolecenie 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:44Czyli 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.