Viime kuussa päätin päivittää palvelimen, jossa Our Code World on tällä hetkellä isännöi aidosti parempi palvelin. Kuten aina teen, hankin uuden palvelimen ja aloin konfiguroida sitä siirtääkseni vanhan palvelimen tiedot. Jonkin ajan kuluttua menin palvelimen hallintapaneeliin heidän verkkosivustollaan poistaakseni vanhan root-avaintiedoston ja huomasin, että datakeskus, jossa palvelin sijaitsi, ei ollutkaan Amerikassa, vaan Ranskassa. Valittu datakeskus oli väärä, joten pyysin uutta palvelinta Amerikkaan. Käyttöönoton jälkeen asensin uuden käyttöjärjestelmän, mutta asensin väärän Ubuntu-version (16 eikä 18.04), joten pyyhin palvelimen jälleen kerran. Tarkistettuani lopuksi kaiken, että asensin oikean Ubuntu-version, yritin käyttää palvelinta SSH:n kautta, yllätyksekseni jälleen kerran päädyin toiseen virheeseen:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 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.
Ongelma johtuu siitä, että olet ottamassa yhteyttä palvelimeen, johon olit aiemmin yhteydessä, mutta jonka RSA-isäntä on muuttunut viimeisimmän yhteyden muodostamisen jälkeen (otin yhteyden palvelimen ensimmäiseen versioon Ubuntu 16.04:llä ja yritin sitten ottaa yhteyden samalle palvelimella, jossa oli Ubuntu 18.04, ja poikkeus ilmeni). Turvallisuusrikkomusten välttämiseksi sinun on poistettava tämä avain paikallisen koneesi known_hosts
-tiedostosta, jotta voit muodostaa yhteyden kunnolla.
A. Poista loukkaava avain manuaalisesti
No, known_hosts-tiedoston poistaminen on kelvollinen ratkaisu, kunhan et välitä siitä, että sinun täytyy joka kerta, kun muodostat yhteyden johonkin palvelimeen, varmistaa, että sormenjälki on voimassa, joten älä poista known_hosts
-tiedostoa. Helpoin ratkaisu on yksinkertaisesti poistaa tiedostosta ongelman aiheuttava rivi, meidän tapauksessamme poikkeusviesti varoitti meitä siitä, että ongelmallinen avain on rivillä #5:
Add correct host key in /root/.ssh/known_hosts to get rid of this message.Offending key in /root/.ssh/known_hosts:5
Siten sinun tarvitsisi vain joko poistaa rivi, käyttämällä yhtä komentoa kuten tämä (korvaa 5 rivisi numerolla):
sed -i '5d' ~/.ssh/known_hosts
Ja se on siinä. Vaihtoehtoisesti voit muokata known_hosts
-tiedostoa käyttämällä päätteellä toimivaa editoria, kuten nano tai vim, ja poistaa rivin itse.
B. Käyttämällä ssh-agent
Vaihtoehtoisesti voit käyttää ssh-keygen-työkalua, jolla voit yksinkertaisesti poistaa virheellisen avaimen, jos tiedät hostin nimen/ip:n:
ssh-keygen -R <SERVER_IP_OR_HOSTNAME> -f ~/.ssh/known_hosts
Tämänkin pitäisi toimia, jotta varoitus ei näy terminaalissa.
Happy coding ❤️!