A múlt hónapban úgy döntöttem, hogy frissíteni a szerver, ahol a mi kód világ jelenleg otthont egy valóban jobb szerver. Ahogy mindig is szoktam, megvásároltam az új szervert, és elkezdtem konfigurálni, hogy a régi szerver adatait átvigyem. Egy idő után elmentem a szerver adminisztrációs felületére a weboldalukon, hogy eltávolítsam a régi root key fájlt, és észrevettem, hogy az adatközpont, ahol a szerver található, nem Amerikában, hanem Franciaországban van. A kiválasztott adatközpont rossz volt, ezért kértem egy új szervert Amerikában. A telepítés után feltelepítettem az új operációs rendszert, de rossz Ubuntu verziót telepítettem (16-os helyett 18.04), ezért ismét töröltem a szervert. Miután végre ellenőriztem mindent, hogy a megfelelő Ubuntu verziót telepítettem, megpróbáltam SSH-n keresztül hozzáférni a szerverhez, meglepetésemre ismét egy újabb hibát kaptam:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 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.
A problémát az okozza, hogy olyan szerverhez csatlakozik, amelyhez korábban már csatlakozott, de amelynek RSA hostja megváltozott az utolsó csatlakozás óta (a szerver első verziójához Ubuntu 16.04-el csatlakoztam, majd ugyanehhez a szerverhez Ubuntu 18.04-el próbáltam csatlakozni és megjelent a kivétel). A biztonság megsértésének elkerülése érdekében a megfelelő csatlakozáshoz el kell távolítania ezt a kulcsot a helyi gép known_hosts
fájljából.
A. Kézzel távolítsa el a jogsértő kulcsot
A known_hosts fájl törlése mindaddig érvényes megoldás, amíg nem érdekli, hogy minden egyes alkalommal, amikor csatlakozik valamelyik szerverhez, meg kell erősítenie, hogy az ujjlenyomat érvényes, ezért ne törölje a known_hosts
fájlt. A legegyszerűbb megoldás, ha egyszerűen eltávolítod a problémát okozó sort a fájlból, a mi esetünkben a kivételüzenet figyelmeztetett minket, hogy a hibás kulcs az 5. sorban van:
Add correct host key in /root/.ssh/known_hosts to get rid of this message.Offending key in /root/.ssh/known_hosts:5
Ezért vagy csak a sort kell eltávolítanod, egyetlen ilyen paranccsal (az 5-öt helyettesítsd a sorszámoddal):
sed -i '5d' ~/.ssh/known_hosts
És ennyi. Vagy módosítsa a known_hosts
fájlt egy terminálszerkesztővel, például a nano vagy a vim segítségével, és távolítsa el a sort saját maga.
B. Az ssh-agent
Alternatívaként használhatja az ssh-keygen eszközt is, hogy egyszerűen eltávolítsa a hibás kulcsot, ha tudja a hostnevet/ip-et:
ssh-keygen -R <SERVER_IP_OR_HOSTNAME> -f ~/.ssh/known_hosts
Ez is működhet, hogy a terminálban ne jelenjen meg a figyelmeztetés.
Happy coding ❤️!