Moodul 2 · 2.1
SSH-võtmete loomine ja kasutamine
Moodul 2: SSH ja võtmed · Lugemisaeg: 10 minutit
Õpieesmärk: Pärast seda õppetundi oskad luua võtmepaari, panna avaliku võtme oma serverisse, logida sisse ilma paroolita ja hoida oma privaatvõtit nii, et kadunud sülearvuti ei muutu katastroofiks.
Põhimõisted: võtmepaar, avalik võti, privaatvõti, ed25519, RSA, paroolifraas, ssh-agent, ssh-copy-id, authorized_keys, õigused 700 ja 600, iga seadme jaoks oma võti, FIDO2-võti
Miks on võtmed paremad kui paroolid
Õppetunnis 1.3 logisid sisse parooliga. See töötab, kuid internetis olevale serverile tulevad juba esimesest minutist külla programmid, mis paroole ära arvata püüavad. Vaata näiteks värske serveri logi:
root@web1:~# journalctl -u ssh --since "1 hour ago" | grep -c "Failed password"
214Sajad katsed tunnis on tavaline. Tugev parool peab need kinni, kuid oled loonud nõrga koha, mida sul vaja ei ole. SSH-võtme puhul on arvamine mõttetu: pole midagi, mida sõnastikust leida.
Võti koosneb kahest kokku kuuluvast osast, mida nimetatakse võtmepaariks:
- Privaatvõti jääb sinu enda arvutisse. Kellel on see fail (ja kes teab paroolifraasi), saab sisse logida. Ära jaga seda kellegagi, ka mitte oma teenusepakkuja ega kasutajatoega.
- Avaliku võtme annad serverile. Seda võivad kõik näha: sellega ei saa sisse logida, ainult kontrollida.
Sisselogimisel ei saada server üle võrgu ühtegi parooli. Sinu arvuti tõestab allkirjaga, et tal on privaatvõti, ja server kontrollib seda allkirja avaliku võtmega. Isegi kui keegi võrgus pealt vaatab, ei näe ta midagi, mida hiljem uuesti kasutada saaks.
Võtme loomine
Võtme lood oma arvutis, mitte serveris. Windows 10 ja 11, macOS ja Linux sisaldavad juba ssh-keygen. Ava PowerShell või 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 2026Mis siin toimub?
-t ed25519valib tüübi. Ed25519 on lühike, kiire ja turvaline ning alates OpenSSH 9.5-st ka vaiketüüp, kui midagi ei määra. Kui pead teenindama vana süsteemi, mis ed25519 ei tunne, kasuta RSA-d vähemalt 3072 bitiga:ssh-keygen -t rsa -b 4096. Vanemad tüübid nagu DSA on OpenSSH-st eemaldatud; ära neid kasuta.-Con lihtsalt kommentaar. Kirjuta sinna midagi, millest hiljem näed, millise seadme võtmega on tegu. See aitab väga, kui pead võtme tühistama.- Paroolifraas krüpteerib privaatvõtme sinu kettal. Kui sülearvuti varastatakse, on vargal krüpteeritud fail. Ilma paroolifraasita pääseb ta kohe ligi kõigile sinu serveritele.
Nüüd on sul kaks faili:
| Fail | Mis | Jagada? |
|---|---|---|
~/.ssh/id_ed25519 | Privaatvõti | Mitte kunagi |
~/.ssh/id_ed25519.pub | Avalik võti, üks tekstirida | Jah, serverisse |
Windowsis asuvad need kaustas C:\Users\anna\.ssh\. Avalik võti on üks rida, mis algab nii: ssh-ed25519:
anna@laptop:~$ cat ~/.ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHk2... anna@laptop 2026Avaliku võtme panemine serverisse
Server otsib avalikke võtmeid selle kasutaja failist ~/.ssh/authorized_keys, kellena sisse logid. Iga rida on üks võti. Võtme sinna saamiseks on kolm võimalust:
1. Paigaldamisel. Enamikul teenusepakkujatel on VPS-i loomisel või uuesti paigaldamisel väli avaliku võtme jaoks. WebOkés on see väli VPS-i vaates nimega "SSH-võti"; teistel pakkujatel töötab see sarnaselt. See on parim viis: siis ei pea parooliga sisselogimine kunagi sees olema.
2. Käsuga ssh-copy-id (macOS ja Linux), kuni parooliga sisselogimine veel töötab:
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äsitsi, näiteks Windowsist või teenusepakkuja konsooli kaudu. Kleebi rida oma .pub-failist faili authorized_keys ja sea õigused paika:
anna@web1:~$ mkdir -p ~/.ssh
anna@web1:~$ nano ~/.ssh/authorized_keys
anna@web1:~$ chmod 700 ~/.ssh
anna@web1:~$ chmod 600 ~/.ssh/authorized_keysNeed õigused ei ole pisiasi. SSH-server kontrollib neid (seadistus StrictModes on vaikimisi sees): kui teised saavad sinu .ssh-kausta või kodukausta kirjutada, eirab server sinu võtmeid. Siis näed lihtsalt jälle paroolipäringut, ilma selge veateateta. Kuidas õigusi lugeda, õpid õppetunnis 3.1.
Testi seejärel uues aknas:
anna@laptop:~$ ssh anna@192.0.2.10
Enter passphrase for key '/home/anna/.ssh/id_ed25519':
anna@web1:~$Küsimus tuleb nüüd sinu enda arvutist (sinu võtme paroolifraas), mitte enam serverist.
ssh-agent: ava lukk ühe korra
Iga kord paroolifraasi sisestada on tülikas. ssh-agent hoiab avatud võtit mälus seni, kuni oled oma arvutisse sisse logitud:
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-is seotakse agent võtmehoidjaga (Keychain), Windowsis on see teenus "OpenSSH Authentication Agent" (lülita see üks kord sisse jaotises Teenused). Nii on sul paroolita sisselogimise mugavus ja ometi krüpteeritud võti kettal.
Ole ettevaatlik agendi edastamisega (agent forwarding, ssh -A): sellega saab server, kuhu sisse logid, kasutada sinu agenti. Kes on selles serveris root, saab siis sinu võtmega edasi minna. Kasuta seda ainult serverites, mida täielikult usaldad, või kasuta ProxyJump (õppetund 2.3).
Iga seadme jaoks oma võti ja tea, milline kus on
Sage viga: üks privaatvõti kopeeritakse sülearvutisse, lauaarvutisse ja telefoni. Kui kaotad ühe seadme, pead võtme igal pool välja vahetama ja kõik seadmed uuesti seadistama. Parem on nii:
- loo igas seadmes oma võti, selge kommentaariga (
-C "anna@telefoon"); - pane kõik avalikud võtmed faili
authorized_keys, üks rea kohta; - kui kaotad seadme, eemalda ainult see üks rida.
Vaata regulaarselt, millistel võtmetel on ligipääs:
anna@web1:~$ ssh-keygen -lf ~/.ssh/authorized_keys
256 SHA256:q3J8vX0bT2kPz9mWc1nR4sLh7uYdE5aF6gBiC0oN2xQ anna@laptop 2026 (ED25519)
256 SHA256:Zt5oP1yW8eQ3rK6sV0bN9mD2xA4cH7jL1uI5fG8tE3w anna@telefoon (ED25519)Kui seal on võti, mida sa ei tunne, on see häiresignaal (õppetund 10.3). Sissetungijad lisavad hea meelega oma võtme faili authorized_keys, et hiljem tagasi tulla.
Riistvaraline võti (FIDO2, näiteks YubiKey) on samuti võimalik. Käsuga ssh-keygen -t ed25519-sk asub salajane osa võtmes endas ja pead seda iga kasutuse ajal puudutama. Varastatud fail on siis väärtusetu. See on tore samm edasi, kuid alustamiseks pole see vajalik.
Privaatvõti kadunud?
Kui kaotad oma ainsa privaatvõtme ja parooliga sisselogimine on välja lülitatud, ei pääse sa SSH kaudu enam sisse. Seepärast:
- pane serverisse alati vähemalt kaks võtit (näiteks sülearvuti ja lauaarvuti oma);
- tea, kuidas töötab teenusepakkuja konsool (õppetund 1.2). Seal logid sisse nii, nagu oleks serveri külge ühendatud klaviatuur, ja see töötab ka ilma SSH-ta. WebOkés on see VPS-i vaates nimega Konsool; teised pakkujad nimetavad seda VNC-konsooliks, veebikonsooliks või hädakonsooliks.
AlmaLinuxis ja Rocky Linuxis
Kõik selles õppetunnis töötab samamoodi. Üks lisalõks: kui SELinux on sees, peab kaustal ~/.ssh olema õige turvasilt. Kui lõid või kopeerisid kausta käsitsi ja sinu võtit eiratakse, parandab selle restorecon -Rv ~/.ssh.
Kokkuvõte
- Võtmepaar koosneb privaatvõtmest (jääb sinu juurde) ja avalikust võtmest (läheb serverisse, faili
~/.ssh/authorized_keys). - Loo võtmed käsuga
ssh-keygen -t ed25519oma arvutis, paroolifraasiga; mugavuse jaoks kasuta ssh-agenti. - Õigused loevad:
~/.sshpeab olema 700 jaauthorized_keys600, muidu eirab server sinu võtit. - Iga seadme jaoks oma võti, selge kommentaariga, et saaksid ühe neist tühistada.
- Hoolitse teise võtme eest ja tunne teenusepakkuja konsooli kui hädasissepääsu.
Test (quiz)
Ülesanne
Ülesanne O2.1: Võtme loomine ja kasutamine. Loo oma arvutis ed25519-võti paroolifraasi ja selge kommentaariga, pane see oma serverisse (teenusepakkuja välja kaudu, käsuga ssh-copy-id või käsitsi), kontrolli õigusi ja logi uues aknas võtmega sisse. Seejärel sisesta oma võtme sõrmejälg (käsu ssh-keygen -lf ~/.ssh/id_ed25519.pub väljundist) ja vasta küsimustele selle kohta, kus sinu privaatvõti asub ja mida teed, kui selle kaotad. Programm kontrollib ainult, kas sõrmejälg on õiges vormis; ülejäänu teed ise.
Ülesanne O2.1: Võtme loomine ja kasutamine
Selle ülesande teed ise, keegi ei kontrolli seda. Märgi ära, mida tegid, ja märgi ülesanne tehtuks.
Privaatvõti jääb sinu enda seadmesse, krüptituna paroolifraasiga, mitte pilvekausta ega e-kirja. Varguse korral eemalda selle seadme rida igas serveris failist authorized_keys ja loo uus võti. Ära kunagi kleebi oma privaatvõtit, ka mitte siia.
Su linnukesed ja märkmed jäävad ainult sellesse brauserisse, me ei saada neid kuhugi. Kui oled sisse loginud, salvestame Minu kursustes ainult info, et tegid ülesande ära.
Loe edasi
Nende artiklite sammud kehtivad WebOké VPS-i vaate ja paneelide kohta; teistel pakkujatel töötab see sarnaselt.
- Sisselogimine oma VPS-i SSH kaudu (ja SSH-võtme loomine)
- DirectAdmin juhend 15.2: SSH Keys ja sisselogimine SSH abil
- Pole enam ligipääsu oma VPS-ile: mis nüüd?
- ssh-keygeni juhend: https://man.openbsd.org/ssh-keygen
- OpenSSH 9.5 väljalaskemärkmed (ed25519 vaikimisi): https://www.openssh.org/txt/release-9.5
