Förra månaden bestämde jag mig för att uppgradera servern där Our Code World för närvarande finns till en bättre server. Som jag alltid gör, förvärvade jag den nya servern och började konfigurera den för att migrera data från den gamla servern. Efter ett tag gick jag till serverns administrationspanel på deras webbplats för att ta bort den gamla rotnyckelfilen och jag märkte att datacentret där servern var placerad inte låg i Amerika, utan i Frankrike. Det valda datacentret var fel, så jag begärde en ny server i Amerika. Efter distributionen installerade jag det nya operativsystemet, men jag installerade fel version av Ubuntu (16 i stället för 18.04), så jag raderade servern en gång till. Efter att äntligen ha kontrollerat att allt jag installerat rätt version av Ubuntu försökte jag komma åt servern via SSH, till min förvåning återigen hamnade jag på ett annat fel:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 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.
Problemet orsakas av att du ansluter till en server som du tidigare varit ansluten till, men vars RSA-värd har ändrats sedan förra gången du anslöt dig till den (jag anslöt mig till den första versionen av servern med Ubuntu 16.04 och försökte sedan att ansluta mig till samma server med Ubuntu 18.04 och undantaget dök upp). För att förhindra säkerhetsöverträdelser måste du ta bort den här nyckeln från known_hosts
-filen på din lokala maskin för att kunna ansluta korrekt.
A. Ta bort den felande nyckeln manuellt
Ja, att ta bort filen known_hosts är en giltig lösning så länge du inte bryr dig om att behöva bekräfta varje gång du ansluter till en server att fingeravtrycket är giltigt, så ta inte bort filen known_hosts
. Den enklaste lösningen är att helt enkelt ta bort raden med problemet i filen, i vårt fall varnade undantagsmeddelandet oss för att den felande nyckeln finns på rad #5:
Add correct host key in /root/.ssh/known_hosts to get rid of this message.Offending key in /root/.ssh/known_hosts:5
Så du behöver bara antingen ta bort raden, med ett enda kommando som detta (ersätt 5 med numret på din rad):
sed -i '5d' ~/.ssh/known_hosts
Och så är det. Alternativt kan du ändra filen known_hosts
med hjälp av en terminalredigerare som nano eller vim och ta bort raden själv.
B. Användning av ssh-agent
Alternativt kan du använda verktyget ssh-keygen för att helt enkelt ta bort den felande nyckeln om du känner till värdnamn/ip:
ssh-keygen -R <SERVER_IP_OR_HOSTNAME> -f ~/.ssh/known_hosts
Detta bör också fungera för att ta bort varningen från att visas i terminalen.
Happy coding ❤️!