Moduuli 2 · 2.1
SSH-avainten luominen ja käyttö
Moduuli 2: SSH ja avaimet · Lukuaika: 10 minuuttia
Tavoite: Tämän oppitunnin jälkeen osaat luoda avainparin, viedä julkisen avaimen palvelimellesi, kirjautua ilman salasanaa ja säilyttää yksityisen avaimesi niin, ettei kadonnut kannettava ole katastrofi.
Keskeiset käsitteet: avainpari, julkinen avain, yksityinen avain, ed25519, RSA, tunnuslause (passphrase), ssh-agent, ssh-copy-id, authorized_keys, oikeudet 700 ja 600, avain laitetta kohden, FIDO2-avain
Miksi avaimet ovat salasanoja parempia
Oppitunnilla 1.3 kirjauduit salasanalla. Se toimii, mutta internetissä oleva palvelin saa ensimmäisestä minuutista lähtien vieraikseen ohjelmia, jotka arvailevat salasanoja. Katso vaikka uuden palvelimen lokia:
root@web1:~# journalctl -u ssh --since "1 hour ago" | grep -c "Failed password"
214Satoja yrityksiä tunnissa on tavallista. Vahva salasana pysäyttää ne, mutta olet silti luonut heikon kohdan, jota et tarvitse. SSH-avaimella arvailu on hyödytöntä: arvattavaa ei löydy mistään sanalistasta.
Avain koostuu kahdesta yhteen kuuluvasta osasta, avainparista:
- Yksityinen avain pysyy omalla tietokoneellasi. Kuka tahansa, jolla on tämä tiedosto (ja joka tietää tunnuslauseen), voi kirjautua. Älä jaa sitä kenenkään kanssa, et palveluntarjoajasi etkä tukipalvelun.
- Julkisen avaimen annat palvelimelle. Sen saa nähdä kuka tahansa: sillä ei voi kirjautua, vain tarkistaa.
Kirjautuessa palvelin ei lähetä salasanaa linjaa pitkin. Tietokoneesi todistaa allekirjoituksella, että sillä on yksityinen avain, ja palvelin tarkistaa allekirjoituksen julkisella avaimella. Vaikka joku seuraisi verkkoliikennettä, hän ei näe mitään, mitä voisi myöhemmin käyttää uudelleen.
Avaimen luominen
Luot avaimen omalla tietokoneellasi, et palvelimella. Windows 10:ssä ja 11:ssä, macOS:ssä ja Linuxissa ssh-keygen on valmiina. Avaa PowerShell tai Pääte (Terminal):
anna@laptop:~$ ssh-keygen -t ed25519 -C "anna@laptop 2026"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/anna/.ssh/id_ed25519):
Enter passphrase for "/home/anna/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/anna/.ssh/id_ed25519
Your public key has been saved in /home/anna/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026Mitä tässä tapahtuu?
-t ed25519valitsee tyypin. Ed25519 on lyhyt, nopea ja turvallinen, ja OpenSSH 9.5:stä lähtien myös oletustyyppi, jos et anna mitään. Jos sinun pitää palvella vanhaa järjestelmää, joka ei tunne ed25519:ää, käytä RSA:ta vähintään 3072 bitillä:ssh-keygen -t rsa -b 4096. Vanhemmat tyypit, kuten DSA, on poistettu OpenSSH:sta; älä käytä niitä.-Con pelkkä kommentti. Kirjoita siihen jotain, mistä näet myöhemmin, minkä laitteen avain on kyseessä. Se auttaa valtavasti, kun avain pitää perua.- Tunnuslause salaa yksityisen avaimen levylläsi. Jos kannettavasi varastetaan, varkaalla on salattu tiedosto. Ilman tunnuslausetta hänellä on suora pääsy kaikille palvelimillesi.
Sinulla on nyt kaksi tiedostoa:
| Tiedosto | Mikä | Jaetaanko? |
|---|---|---|
~/.ssh/id_ed25519 | Yksityinen avain | Ei koskaan |
~/.ssh/id_ed25519.pub | Julkinen avain, yksi tekstirivi | Kyllä, palvelimelle |
Windowsissa ne ovat kansiossa C:\Users\anna\.ssh\. Julkinen avain on yksi rivi, joka alkaa ssh-ed25519:
anna@laptop:~$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHk2... anna@laptop 2026Julkisen avaimen vieminen palvelimelle
Palvelin etsii julkisia avaimia sen käyttäjän tiedostosta ~/.ssh/authorized_keys, jolla kirjaudut. Jokainen rivi on yksi avain. Avaimen saa sinne kolmella tavalla:
1. Asennuksen yhteydessä. Useimmilla palveluntarjoajilla on VPS:n luonnin tai uudelleenasennuksen yhteydessä kenttä julkiselle avaimelle. WebOkéssa kentän nimi on "SSH-avain" VPS-näkymässä; muilla palveluntarjoajilla se toimii samaan tapaan. Tämä on paras tapa: silloin salasanakirjautumisen ei tarvitse olla koskaan päällä.
2. Komennolla ssh-copy-id (macOS ja Linux), kun salasanakirjautuminen vielä toimii:
anna@laptop:~$ ssh-copy-id anna@192.0.2.10
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed
anna@192.0.2.10's password:
Number of key(s) added: 13. Käsin, esimerkiksi Windowsista tai palveluntarjoajasi konsolin kautta. Liitä .pub-tiedostosi rivi tiedostoon authorized_keys ja aseta oikeudet kuntoon:
anna@web1:~$ mkdir -p ~/.ssh
anna@web1:~$ nano ~/.ssh/authorized_keys
anna@web1:~$ chmod 700 ~/.ssh
anna@web1:~$ chmod 600 ~/.ssh/authorized_keysOikeudet eivät ole pikkuasia. SSH-palvelin tarkistaa ne (asetus StrictModes on oletuksena päällä): jos muut voivat kirjoittaa .ssh-kansioosi tai kotihakemistoosi, palvelin ohittaa avaimesi. Näet silloin vain taas salasanakehotteen ilman selvää virheilmoitusta. Oikeuksien lukemisen opit oppitunnilla 3.1.
Testaa sen jälkeen uudessa ikkunassa:
anna@laptop:~$ ssh anna@192.0.2.10
Enter passphrase for key '/home/anna/.ssh/id_ed25519':
anna@web1:~$Kysymys tulee nyt omalta tietokoneeltasi (avaimesi tunnuslause), ei enää palvelimelta.
ssh-agent: avaus vain kerran
Tunnuslauseen näppäily joka kerta on hankalaa. ssh-agent pitää avatun avaimesi muistissa niin kauan kuin olet kirjautuneena tietokoneellesi:
anna@laptop:~$ ssh-add ~/.ssh/id_ed25519
Enter passphrase for /home/anna/.ssh/id_ed25519:
Identity added: /home/anna/.ssh/id_ed25519 (anna@laptop 2026)
anna@laptop:~$ ssh-add -l
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)macOS:ssä agentti kytkeytyy avainnippuun, Windowsissa se on palvelu "OpenSSH Authentication Agent" (otetaan kerran käyttöön Palvelut-ikkunassa). Näin saat salasanattoman kirjautumisen helppouden ja silti salatun avaimen levylle.
Varo agent forwardingia (ssh -A): sen avulla palvelin, jolle kirjaudut, saa käyttää agenttiasi. Kuka tahansa, joka on root kyseisellä palvelimella, voi silloin jatkaa avaimellasi. Käytä sitä vain palvelimilla, joihin luotat täysin, tai käytä ProxyJump (oppitunti 2.3).
Yksi avain laitetta kohden, ja tiedä missä mikin on
Yleinen virhe: sama yksityinen avain kopioidaan kannettavalle, pöytäkoneelle ja puhelimeen. Jos yksi laite katoaa, avain pitää vaihtaa kaikkialla ja kaikki laitteet asentaa uudelleen. Parempi tapa:
- luo jokaiselle laitteelle oma avain selkeällä kommentilla (
-C "anna@telefoon"); - lisää kaikki julkiset avaimet tiedostoon
authorized_keys, yksi riviä kohden; - jos laite katoaa, poista vain sen yksi rivi.
Tarkista säännöllisesti, millä avaimilla on pääsy:
anna@web1:~$ ssh-keygen -lf ~/.ssh/authorized_keys
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)
256 SHA256:Zt5oP1yW8eQ3rK6sV0bN9mD2xA4cH7jL1uI5fG8tE3w anna@telefoon (ED25519)Jos joukossa on avain, jota et tunnista, se on hälytysmerkki (oppitunti 10.3). Murtautujat lisäävät mielellään oman avaimensa tiedostoon authorized_keys palatakseen myöhemmin.
Laiteavainkin (FIDO2, kuten YubiKey) käy. Komennolla ssh-keygen -t ed25519-sk salainen osa on itse avaimessa, ja sitä pitää koskettaa jokaisella käyttökerralla. Varastettu tiedosto on silloin arvoton. Se on hieno lisäaskel, mutta ei tarpeen alussa.
Yksityinen avain kadonnut?
Jos ainoa yksityinen avaimesi katoaa ja salasanakirjautuminen on pois päältä, et pääse enää sisään SSH:lla. Siksi:
- pidä palvelimella aina vähintään kaksi avainta (esimerkiksi kannettava ja pöytäkone);
- tiedä, miten palveluntarjoajasi konsoli toimii (oppitunti 1.2). Siellä kirjaudut kuin palvelimeen olisi kytketty näppäimistö, ja se toimii myös ilman SSH:ta. WebOkéssa sen nimi on Konsoli VPS-näkymässä; muut palveluntarjoajat kutsuvat sitä VNC-konsoliksi, verkkokonsoliksi tai hätäkonsoliksi.
AlmaLinuxissa ja Rocky Linuxissa
Kaikki tämän oppitunnin asiat toimivat samoin. Yksi lisäsudenkuoppa: kun SELinux on päällä, kansiolla ~/.ssh pitää olla oikea suojausnimiö. Jos olet luonut tai kopioinut kansion käsin ja avaimesi ohitetaan, restorecon -Rv ~/.ssh korjaa asian.
Yhteenveto
- Avainpari koostuu yksityisestä avaimesta (pysyy sinulla) ja julkisesta avaimesta (menee palvelimelle tiedostoon
~/.ssh/authorized_keys). - Luo avaimet komennolla
ssh-keygen -t ed25519omalla tietokoneellasi tunnuslauseen kanssa; käytä ssh-agentia helpottamaan. - Oikeuksilla on väliä:
~/.ssharvoon 700 jaauthorized_keysarvoon 600, muuten palvelin ohittaa avaimesi. - Yksi avain laitetta kohden selkeällä kommentilla, jotta voit perua yhden kerrallaan.
- Pidä varalla toinen avain ja tunne palveluntarjoajasi konsoli hätäsisäänkäyntinä.
Tietovisa (quiz)
Tehtävä
Tehtävä O2.1: Avaimen luominen ja käyttö. Luo omalla tietokoneellasi ed25519-avain tunnuslauseella ja selkeällä kommentilla, vie se palvelimellesi (palveluntarjoajasi kentän kautta, komennolla ssh-copy-id tai käsin), tarkista oikeudet ja kirjaudu uudessa ikkunassa avaimella. Syötä sen jälkeen avaimesi sormenjälki (komennon ssh-keygen -lf ~/.ssh/id_ed25519.pub tulosteesta) ja vastaa kysymyksiin siitä, missä yksityinen avaimesi on ja mitä teet, jos se katoaa. Ohjelma tarkistaa vain, että sormenjälki on oikeassa muodossa; loput teet itse.
Tehtävä O2.1: Avaimen luominen ja käyttö
Tämän tehtävän teet itse, kukaan ei tarkista sitä. Merkitse tekemäsi kohdat ja merkitse tehtävä tehdyksi.
Yksityinen avain pysyy omalla laitteellasi salalauseella salattuna, ei pilvikansiossa eikä sähköpostissa. Jos laite varastetaan, poista sen laitteen rivi authorized_keys-tiedostosta jokaisella palvelimella ja luo uusi avain. Älä koskaan liitä yksityistä avaintasi mihinkään, ei myöskään tähän.
Merkintäsi ja muistiinpanosi pysyvät vain tässä selaimessa, emme lähetä niitä minnekään. Jos olet kirjautunut sisään, tallennamme kohtaan Omat kurssit vain sen, että olet tehnyt tehtävän.
Lue lisää
Näiden artikkelien ohjeet koskevat WebOkén VPS-näkymää ja paneeleja; muilla palveluntarjoajilla se toimii samaan tapaan.
- Kirjautuminen VPS:llesi SSH:lla (ja SSH-avaimen luominen)
- DirectAdmin-ohje 15.2: SSH-avaimet ja sisäänkirjautuminen SSH:lla
- Et pääse enää VPS:llesi: mitä nyt?
- ssh-keygenin käyttöohje: https://man.openbsd.org/ssh-keygen
- OpenSSH 9.5:n julkaisutiedot (ed25519 oletuksena): https://www.openssh.org/txt/release-9.5
