Moodul 1 · 1.3
Esimene SSH-sisselogimine
Moodul 1: Sinu esimene server · Lugemisaeg: 10 minutit
Õpieesmärk: Pärast seda õppetundi oskad esimest korda SSH-ga oma serverisse sisse logida ja kontrollida serveri sõrmejälge enne, kui seda usaldad. Samuti tead, mida teha, kui saad hoiatuse, et serveri identiteet on muutunud.
Põhimõisted: SSH, klient ja server, port 22, versioonibänner, hostivõti (host key), sõrmejälg (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell ja Terminal
Mis on SSH
SSH (Secure Shell) on krüpteeritud ühendus, millega haldad serverit eemalt. Trükid käske oma arvutis, aga need käivitatakse serveris. Kõik, mis liinil liigub, ka sinu parool, on krüpteeritud.
Ühendusel on kaks poolt:
- SSH-klient sinu enda arvutis: programm
ssh. macOS-is ja Linuxis on see vaikimisi olemas. Windows 10-s (alates versioonist 1809) ja Windows 11-s on OpenSSH klient Windowsi osa, seda kasutad PowerShellis või Windows Terminalis. Kui see puudub, lisa see menüüst Sätted, Valikulised funktsioonid, "OpenSSH klient". Aknaga programmid nagu PuTTY töötavad samuti, kuid selles kursuses kasutamessh. - SSH-server VPS-is: programm
sshd(OpenSSH-ist). Vaikimisi kuulab see porti 22.
Sisselogimine
Logid sisse kasutajanime ja serveri aadressiga:
PS C:\Users\anna> ssh root@192.0.2.10Või nimega, kui oled selle DNS-i lisanud (õppetund 7.1):
anna@laptop:~$ ssh root@web1.example.comEsimesel korral näed midagi sellist:
The authenticity of host '192.0.2.10 (192.0.2.10)' can't be established.
ED25519 key fingerprint is SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?See on selle õppetunni kõige tähtsam hetk. Ära trüki pimesi yes.
Hostivõti ja sõrmejälg
Igal SSH-serveril on üks või mitu hostivõtit (host keys): võtmepaarid, millega server tõestab, kes ta on. Avalikud osad asuvad serveris kaustas /etc/ssh/, näiteks /etc/ssh/ssh_host_ed25519_key.pub. Iga ühenduse ajal näitab server, et tal on olemas salajane osa.
Sõrmejälg on sellise avaliku võtme lühike kokkuvõte (räsi). OpenSSH näitab vaikimisi SHA256-kuju: SHA256:, millele järgneb 43 märki.
Küsimus "Are you sure you want to continue connecting?" tähendab: sinu arvuti ei tunne seda serverit veel. Kes tagab, et suhtled oma VPS-iga, mitte kellegagi, kes liiklust pealt kuulab? Mitte keegi, kui sa ise sõrmejälge usaldusväärse allikaga ei võrdle.
See allikas on teenusepakkuja konsool (õppetund 1.2). Seal ei suhtle sa serveriga üle võrgu. Logi konsooli sisse ja küsi sõrmejälge:
root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)Kui see ühtib täpselt sellega, mida klient näitab, trüki yes. Võid yes asemel kleepida ka sõrmejälje enda, siis võrdleb ssh selle sinu eest. Kui see erineb, peatu ja uuri põhjust (vale IP-aadress, server on uuesti paigaldatud või midagi tõsisemat).
Pane tähele tüüpi: klient nimetab tüübi (ED25519, ECDSA või RSA). Võrdle sama tüüpi sõrmejälge. Paljud tõmmised näitavad sõrmejälgi ka esimesel käivitusel konsoolis (cloud-init), selliste ridade vahel nagu BEGIN SSH HOST KEY FINGERPRINTS.
known_hosts ja trust on first use
Kui trükid yes, näed:
Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.Klient salvestab võtme faili ~/.ssh/known_hosts (Windowsis C:\Users\<naam>\.ssh\known_hosts). Edaspidi võrdleb ta igal ühendusel automaatselt. Seda mudelit nimetatakse trust on first use (TOFU): esimesel korral pead ise kontrollima, edaspidi valvab klient.
Seepärast on see esimene kontroll nii tähtis: kui usaldad vale võtit, ei hoiata klient sind enam kunagi.
Kui töötad ise Debiani või Ubuntuga arvutis, on nimed failis known_hosts vaikimisi räsitud (HashKnownHosts yes failis /etc/ssh/ssh_config), nii et loetavaid IP-aadresse sa seal ei näe. Windowsis ja macOS-is on need loetavad. Otsimine töötab kõikjal nii:
anna@laptop:~$ ssh-keygen -F 192.0.2.10
# Host 192.0.2.10 found: line 3
|1|kP9...= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA..."REMOTE HOST IDENTIFICATION HAS CHANGED"
Mõnikord näed sellist hoiatust:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.Server näitab teist võtit, kui sinu klient tunneb. ssh keeldub siis ühendust loomast. Põhjusi on kahte sorti:
| Tavaline | Kahtlane |
|---|---|
| Paigaldasid VPS-i uuesti (uued hostivõtmed) | Sa ei muutnud midagi, aga võti on ikkagi teine |
| IP-aadress anti teisele serverile | Oled võõras wifivõrgus |
| Vahetasid hostivõtmed teadlikult välja | Konsooli sõrmejälg erineb sellest, mida klient praegu näeb |
Kui põhjus on tavaline, kontrolli konsoolis uuesti sõrmejälge ja eemalda alles seejärel vana rida:
anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.Järgmisel ühendusel saad uuesti esimese korra küsimuse ja kontrollid jälle. Ära kunagi pane seadetesse StrictHostKeyChecking no, et hoiatusest lahti saada: nii lülitad välja just selle kaitse, millest kõik sõltub.
Versioonibänner
Enne kui midagi krüpteeritakse, saadavad klient ja server teineteisele ühe tekstirea: versioonibänneri. See on kõigile internetis nähtav. Näed seda käsuga ssh -v:
anna@laptop:~$ ssh -v root@192.0.2.10 2>&1 | grep "remote software"
debug1: Remote protocol version 2.0, remote software version OpenSSH_9.6p1 Ubuntu-3ubuntu13.5Server ütleb siin, millist protokolli (2.0) ja tarkvara ta kasutab. Debian ja Ubuntu lisavad lõppu paketi versiooni. See pole saladus, mida peaksid peitma: ründajad proovivad niikuinii kõike ja end kaitsed uuendustega (moodul 4), mitte teistsuguse bänneriga. Kasulik on see küll: bänneri järgi näed väljastpoolt, kas su server tõesti uuendatud versiooni kasutab.
AlmaLinuxis ja Rocky Linuxis
Sisselogimine ja sõrmejäljed töötavad samamoodi. Teenuse nimi on sshd, mitte ssh (systemctl status sshd). Bänneris pole distributsiooni nime, ainult OpenSSH versioon.
Kokkuvõte
- SSH on krüpteeritud ühendus sinu serverisse;
sshon klient,sshdserver pordil 22. - Esimesel ühendusel näitab klient hostivõtme sõrmejälge. Võrdle seda konsoolis käsu
ssh-keygen -lfväljundiga, enne kui trükidyes. - Klient salvestab võtme faili
~/.ssh/known_hostsja hoiatab edaspidi ise (trust on first use). - "REMOTE HOST IDENTIFICATION HAS CHANGED" on pärast uuesti paigaldamist tavaline, muidu kahtlane. Eemalda vana rida ainult pärast kontrolli, käsuga
ssh-keygen -R. - Versioonibänner on avalik; kaitse tuleb uuendustest, mitte peitmisest.
Test (quiz)
Ülesanne
Ülesanne Z1.3: Sinu serveri SSH-bänner ja sõrmejälg. Sisesta oma serveri aadress, bännerist pärit tarkvara versioon (näiteks OpenSSH_9.6p1) ja ED25519-sõrmejälg, mille küsisid konsoolis käsuga ssh-keygen -lf. Programm loob ühe ühenduse sinu SSH-porti, loeb bänneri ja hostivõtme ning võrdleb. Sisse see ei logi.
Loe edasi
- Sisselogimine oma VPS-i SSH kaudu (ja SSH-võtme loomine)
- Pole enam ligipääsu oma VPS-ile: mis nüüd?
- ssh-keygen(1), valikud -l, -F ja -R: https://manpages.debian.org/trixie/openssh-client/ssh-keygen.1.en.html
- ssh_config(5), StrictHostKeyChecking, FingerprintHash ja HashKnownHosts: https://manpages.debian.org/trixie/openssh-client/ssh_config.5.en.html
- RFC 4253, jaotis 4.2 (versioonibänner): https://www.rfc-editor.org/rfc/rfc4253.html
