W ostatnim miesiącu postanowiłem zmodernizować serwer, na którym obecnie znajduje się Our Code World, na naprawdę lepszy. Jak to zawsze robię, nabyłem nowy serwer i zacząłem go konfigurować w celu migracji danych ze starego serwera. Po pewnym czasie, wszedłem do panelu administracyjnego serwera na ich stronie, aby usunąć stary plik klucza głównego i zauważyłem, że datacenter, w którym znajdował się serwer nie znajdowało się w Ameryce, ale we Francji. Wybrane centrum danych było błędne, więc poprosiłem o nowy serwer w Ameryce. Po wdrożeniu zainstalowałem nowy system operacyjny, ale zainstalowałem złą wersję Ubuntu (16 zamiast 18.04), więc ponownie wyczyściłem serwer. Po ostatecznym sprawdzeniu, że wszystko co zainstalowałem to właściwa wersja Ubuntu, spróbowałem uzyskać dostęp do serwera przez SSH, ku mojemu zaskoczeniu po raz kolejny skończyło się na kolejnym błędzie:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 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 isXX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XXPlease contact your system administrator.Add correct host key in /root/.ssh/known_hosts to get rid of this message.Offending key in /root/.ssh/known_hosts:5RSA host key for :22 has changed and you have requested strict checking.Host key verification failed.
Problem jest spowodowany tym, że łączysz się z serwerem, z którym wcześniej byłeś połączony, ale którego host RSA zmienił się od czasu ostatniego połączenia (połączyłem się z pierwszą wersją serwera z Ubuntu 16.04, a następnie próbowałem połączyć się z tym samym serwerem z Ubuntu 18.04 i wyjątek się pojawił). Aby zapobiec naruszeniu bezpieczeństwa, będziesz musiał usunąć ten klucz z pliku known_hosts
swojego lokalnego komputera, aby połączyć się poprawnie.
A. Ręczne usunięcie obraźliwego klucza
Cóż, usunięcie pliku known_hosts jest dobrym rozwiązaniem tak długo, jak nie zależy Ci na konieczności potwierdzania za każdym razem, gdy łączysz się z jakimś serwerem, że odcisk palca jest ważny, więc nie usuwaj pliku known_hosts
. Najprostszym rozwiązaniem jest po prostu usunięcie linii z problemem w pliku, w naszym przypadku wiadomość o wyjątku ostrzegła nas, że obraźliwy klucz jest w linii #5:
Add correct host key in /root/.ssh/known_hosts to get rid of this message.Offending key in /root/.ssh/known_hosts:5
Więc musiałbyś tylko albo usunąć linię, używając pojedynczej komendy jak ta (zamień 5 na numer swojej linii):
sed -i '5d' ~/.ssh/known_hosts
I to wszystko. Alternatywnie, zmodyfikuj plik known_hosts
za pomocą edytora terminala, takiego jak nano lub vim i usuń linię samodzielnie.
B. Użycie ssh-agent
Alternatywnie możesz użyć narzędzia ssh-keygen, aby po prostu usunąć obraźliwy klucz, jeśli znasz nazwę hosta/ip:
ssh-keygen -R <SERVER_IP_OR_HOSTNAME> -f ~/.ssh/known_hosts
To również powinno zadziałać, aby usunąć ostrzeżenie pojawiające się w terminalu.
Szczęśliwe kodowanie ❤️!
.