Poslední měsíc jsem se rozhodl upgradovat server, na kterém je v současné době hostován Our Code World, na skutečně lepší server. Jak to dělám vždy, pořídil jsem si nový server a začal ho konfigurovat, abych na něj přenesl data ze starého serveru. Po nějaké době jsem šel do administračního panelu serveru na jejich webových stránkách, abych odstranil starý soubor s kořenovým klíčem, a všiml jsem si, že datové centrum, kde se server nachází, není v Americe, ale ve Francii. Vybrané datové centrum bylo špatné, takže jsem požádal o nový server v Americe. Po nasazení jsem nainstaloval nový operační systém, ale nainstaloval jsem špatnou verzi Ubuntu (16 místo 18.04), takže jsem znovu smazal serverð¤£. Poté, co jsem konečně zkontroloval vše, že jsem nainstaloval správnou verzi Ubuntu, zkusil jsem se k serveru připojit přes SSH, k mému překvapení jsem opět skončil s další chybou:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 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.
Problém je způsoben tím, že se připojujete k serveru, ke kterému jste byli dříve připojeni, ale jehož hostitel RSA se od posledního připojení změnil (připojil jsem se k první verzi serveru s Ubuntu 16.04 a poté jsem se zkusil připojit ke stejnému serveru s Ubuntu 18.04 a objevila se výjimka). Abyste zabránili jakémukoli narušení bezpečnosti, budete muset pro správné připojení odstranit tento klíč ze souboru known_hosts
svého místního počítače.
A. Ruční odstranění inkriminovaného klíče
No, odstranění souboru known_hosts je správné řešení, pokud vám nezáleží na tom, abyste museli při každém připojení k nějakému serveru potvrzovat, že otisk je platný, takže soubor known_hosts
neodstraňujte. Nejjednodušším řešením je jednoduše odstranit řádek s problémem v souboru, v našem případě nás hlášení o výjimce upozornilo, že inkriminovaný klíč je v řádku č. 5:
Add correct host key in /root/.ssh/known_hosts to get rid of this message.Offending key in /root/.ssh/known_hosts:5
Takže by stačilo buď odstranit řádek, pomocí jediného příkazu takto (číslo 5 nahraďte číslem vašeho řádku):
sed -i '5d' ~/.ssh/known_hosts
A je to. Případně upravte soubor known_hosts
pomocí terminálového editoru, například nano nebo vim, a řádek odstraňte sami:
B. Pomocí nástroje ssh-agent
Případně můžete použít nástroj ssh-keygen a jednoduše odstranit inkriminovaný klíč, pokud znáte jméno hostitele/ip:
ssh-keygen -R <SERVER_IP_OR_HOSTNAME> -f ~/.ssh/known_hosts
Toto by mělo fungovat stejně, aby se varování nezobrazovalo v terminálu.
Šťastné kódování ❤️!
.