SSH-isäntäavaimen virheen korjaaminen Cloud Serverin uudelleenasennuksen jälkeen
SSH-asiakasohjelmat:
- Terminal (OpenSSH) macOS- ja Linux-järjestelmissä
- PowerShellin OpenSSH Windowsissa
- PuTTY Windowsissa
Tilanteet, joissa virhe voi ilmetä:
- Cloud Serverin uudelleenasennuksen (redeploy) jälkeen
- Palvelimen SSH-isäntäavainten uudelleenluonnin jälkeen
Esimerkkivirhe
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 a host key has just been changed. The fingerprint for the ED25519 key sent by the remote host is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. Please contact your system administrator. Add correct host key in /home/user/.ssh/known_hosts to get rid of this message. Remove offending key in /home/user/.ssh/known_hosts:3 Host key for <ip-or-hostname> has changed and you have requested strict checking. Host key verification failed.
Miksi tämä tapahtuu?
SSH-palvelin luo ensimmäisellä käynnistyskerrallaan joukon yksilöllisiä isäntäavaimia. Kun yhdistät palvelimelle ensimmäisen kerran, SSH-asiakasohjelma tallentaa avaimen sormenjäljen paikallisesti ja tarkistaa sen jokaisella myöhemmällä yhteyskerralla. Näin voidaan varmistaa, että yhteys muodostetaan edelleen samaan palvelimeen eikä väliin ole tullut kolmatta osapuolta.
- OpenSSH tallentaa tiedot known_hosts-tiedostoon.
- PuTTY tallentaa tiedot Windowsin rekisteriin.
Kun Cloud Server asennetaan uudelleen, myös SSH-isäntäavaimet luodaan uudestaan. Vaikka palvelimen IP-osoite pysyy samana, sen sormenjälki muuttuu.
SSH-asiakas vertaa uutta sormenjälkeä aiemmin tallennettuun arvoon. Jos ne eivät täsmää, yhteyttä ei muodosteta automaattisesti, vaan käyttäjälle näytetään varoitus mahdollisen välistävetohyökkäyksen (man-in-the-middle attack) varalta.
Tämä on normaalia toimintaa palvelimen uudelleenasennuksen jälkeen eikä viittaa tietoturvaongelmaan.
Korjausohjeet
macOS ja Linux (Terminal)
- Avaa Terminal.
- Poista vanha isäntäavainmerkintä:
ssh-keygen -R <palvelimen-ip>
- Jos käytät yhteydessä palvelimen nimeä (esimerkiksi rDNS-nimeä), poista myös sitä vastaava merkintä:
ssh-keygen -R <palvelimen-nimi>
- Muodosta yhteys uudelleen:
ssh <käyttäjä>@<palvelimen-ip>
- SSH näyttää uuden avaimen sormenjäljen ja pyytää vahvistusta. Hyväksy uusi avain kirjoittamalla:
yes
Windows (PowerShell / OpenSSH)
- Avaa PowerShell.
- Poista vanha isäntäavainmerkintä:
ssh-keygen -R <palvelimen-ip>
- Jos käyttämäsi OpenSSH-versio ei tue
-R-parametria, avaa known_hosts-tiedosto manuaalisesti:
notepad $env:USERPROFILE\.ssh\known_hosts
- Etsi rivi, joka sisältää palvelimen IP-osoitteen tai hostnamen.
- Poista kyseinen rivi, tallenna tiedosto ja sulje Muistio.
- Muodosta yhteys uudelleen:
ssh <käyttäjä>@<palvelimen-ip>
- Hyväksy uusi sormenjälki kirjoittamalla:
yes
Windows (PuTTY)
Vaihtoehto A: Hyväksy uusi avain yhteyden muodostamisen yhteydessä
- Avaa PuTTY ja yhdistä palvelimeen normaalisti.
- Kun näkyviin tulee ilmoitus:
WARNING - POTENTIAL SECURITY BREACH
- Tarkista uusi sormenjälki ja valitse Yes.
PuTTY tallentaa uuden avaimen automaattisesti, eikä ilmoitusta näytetä enää seuraavilla yhteyskerroilla.
Vaihtoehto B: Poista vanha avain manuaalisesti
- Avaa Rekisterieditori:
regedit
- Siirry polkuun:
HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys
- Etsi palvelinta vastaava merkintä, esimerkiksi:
rsa2@22:<ip-osoite>
- Poista merkintä.
- Sulje Rekisterieditori.
- Muodosta yhteys uudelleen PuTTYllä ja hyväksy uusi avain valitsemalla Yes.
Tärkeää huomioitavaa
- Hyväksy uusi SSH-isäntäavain vain silloin, kun tiedät muutoksen syyn, esimerkiksi jos olet juuri asentanut palvelimen uudelleen.
- Jos varoitus ilmestyy ilman, että olet tehnyt muutoksia palvelimeen, selvitä syy ennen yhteyden muodostamista.
- Älä poista isäntäavainten tarkistusta käytöstä esimerkiksi asetuksella
StrictHostKeyChecking=no. Tämä heikentää merkittävästi SSH-yhteyksien tietoturvaa. - Muokkaa Windowsin rekisteriä vain yllä mainitusta sijainnista. Virheelliset muutokset voivat aiheuttaa järjestelmäongelmia.
- Toimenpide tarvitsee tehdä vain kerran jokaisen uudelleenasennuksen jälkeen. Kun uusi avain on hyväksytty, yhteydet toimivat normaalisti siihen asti, kunnes palvelin asennetaan uudelleen seuraavan kerran.
Jos ongelma jatkuu
"Permission denied" tai "Access denied"
Tarkista käyttäjätunnus, salasana ja mahdollinen SSH-avain. Uudelleenasennus palauttaa palvelimen käyttöjärjestelmän oletusasetukset ja käyttöoikeudet.
Varoitus näkyy edelleen avaimen poistamisen jälkeen
Joissakin ympäristöissä käytössä voi olla useita known_hosts-tiedostoja. Varmista, että poistit merkinnän juuri siitä tiedostosta, jota SSH-asiakas käyttää.
PuTTY kysyy avaimen hyväksymistä joka kerta
Varmista, että hyväksyit avaimen valitsemalla Yes eikä No tai Cancel. Tarkista myös, että poistit oikean rekisterimerkinnän.
Yhteys ei muodostu lainkaan
Varmista, että:
- palvelin on käynnissä
- palomuuri sallii SSH-yhteydet
- mahdolliset IP-rajaukset eivät estä yhteyttäsi
Usein kysytyt kysymykset
Miksi SSH-avaimen sormenjälki muuttui?
Palvelimen uudelleenasennus luo uudet SSH-isäntäavaimet osana käyttöjärjestelmän puhdasta asennusta. Tämän vuoksi sormenjälki muuttuu, vaikka IP-osoite säilyy samana.
Voinko hyväksyä uuden sormenjäljen turvallisesti?
Kyllä, jos tiedät muutoksen johtuvan omasta toimenpiteestäsi, kuten palvelimen uudelleenasennuksesta. Jos et ole tehnyt muutoksia, varmista muutoksen syy ennen hyväksymistä.
Joudunko hyväksymään uuden SSH-isäntäavaimen uudelleen?
Kyllä, aina kun palvelin asennetaan uudelleen tai SSH-isäntäavaimet luodaan uudelleen. Tällöin uusi sormenjälki täytyy hyväksyä ensimmäisen yhteyskerran yhteydessä.