1. modulis · 1.3
Pirmā pieteikšanās ar SSH
1. modulis: Jūsu pirmais serveris · Lasīšanas laiks: 10 min.
Mācīšanās mērķis: Pēc šīs nodarbības Jūs varēsiet pirmo reizi pieteikties savā serverī ar SSH, pārbaudīt servera pirkstu nospiedumu, pirms tam uzticaties, un zināsiet, kā rīkoties, ja parādās brīdinājums, ka servera identitāte ir mainījusies.
Pamatjēdzieni: SSH, klients un serveris, ports 22, versijas baneris, host key (resursdatora atslēga), pirkstu nospiedums (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell un Terminal
Kas ir SSH
SSH (Secure Shell) ir šifrēts savienojums, ar kuru Jūs attālināti pārvaldāt serveri. Jūs rakstāt savā datorā, bet komandas tiek izpildītas serverī. Viss, kas tiek pārsūtīts pa līniju, arī Jūsu parole, ir šifrēts.
Ir divas puses:
- SSH klients Jūsu datorā: programma
ssh. macOS un Linux sistēmās tā ir iekļauta pēc noklusējuma. Windows 10 (sākot ar versiju 1809) un Windows 11 sistēmā OpenSSH klients ir Windows sastāvdaļa; to izmanto PowerShell vai Windows Terminal. Ja tā nav, pievienojiet to sadaļā Iestatījumi, Izvēles līdzekļi, "OpenSSH klients". Darbojas arī programmas ar logiem, piemēram, PuTTY, taču šajā kursā mēs izmantojamssh. - SSH serveris VPS: programma
sshd(no OpenSSH). Pēc noklusējuma tā klausās portā 22.
Pieteikšanās
Jūs piesakāties ar lietotājvārdu un servera adresi:
PS C:\Users\anna> ssh root@192.0.2.10Vai ar nosaukumu, ja esat to ierakstījuši DNS (nodarbība 7.1):
anna@laptop:~$ ssh root@web1.example.comPirmajā reizē Jūs redzēsiet kaut ko līdzīgu šim:
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])?Šis ir svarīgākais brīdis šajā nodarbībā. Neierakstiet yes akli.
Host key un pirkstu nospiedums
Katram SSH serverim ir viena vai vairākas host keys: atslēgu pāri, ar kuriem serveris pierāda, kas tas ir. Publiskās daļas atrodas serverī mapē /etc/ssh/, piemēram, /etc/ssh/ssh_host_ed25519_key.pub. Ikreiz, kad tiek izveidots savienojums, serveris parāda, ka tam ir slepenā daļa.
Pirkstu nospiedums ir īss šādas publiskās atslēgas kopsavilkums (jaucējvērtība jeb hash). OpenSSH pēc noklusējuma rāda SHA256 formu: SHA256:, kam seko 43 rakstzīmes.
Jautājums "Are you sure you want to continue connecting?" nozīmē: Jūsu dators šo serveri vēl nepazīst. Kas garantē, ka Jūs sazināties ar savu VPS, nevis ar kādu, kas pārtver datplūsmu? Neviens, ja vien Jūs nesalīdzināt pirkstu nospiedumu ar uzticamu avotu.
Šis avots ir Jūsu pakalpojumu sniedzēja konsole (nodarbība 1.2). Tur Jūs ar serveri nesazināties caur tīklu. Piesakieties konsolē un pieprasiet pirkstu nospiedumu:
root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)Ja tas precīzi sakrīt ar to, ko rāda klients, ierakstiet yes. Jūs varat arī yes vietā ielīmēt pašu pirkstu nospiedumu; tad ssh to salīdzinās Jūsu vietā. Ja tas atšķiras, apstājieties un noskaidrojiet iemeslu (nepareiza IP adrese, serveris ir pārinstalēts vai kas nopietnāks).
Pievērsiet uzmanību tipam: klients norāda tipu (ED25519, ECDSA vai RSA). Salīdziniet tā paša tipa pirkstu nospiedumu. Daudzi attēli (images) pirmās palaišanas laikā pirkstu nospiedumus parāda arī konsolē (cloud-init), starp tādām rindām kā BEGIN SSH HOST KEY FINGERPRINTS.
known_hosts un trust on first use
Ja ierakstāt yes, Jūs redzat:
Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.Klients saglabā atslēgu failā ~/.ssh/known_hosts (Windows sistēmā C:\Users\<naam>\.ssh\known_hosts). No šī brīža tas katrā savienojumā salīdzina automātiski. Šo modeli sauc par trust on first use (TOFU, uzticēšanās pirmajā lietošanas reizē): pirmajā reizē Jums tas jāpārbauda pašiem, pēc tam to uzrauga klients.
Tāpēc šī pirmā pārbaude ir tik svarīga: ja uzticaties nepareizai atslēgai, klients pēc tam vairs nekad nebrīdinās.
Ja Jūs paši strādājat datorā ar Debian vai Ubuntu, nosaukumi failā known_hosts pēc noklusējuma tiek saglabāti jaucējvērtību veidā (HashKnownHosts yes failā /etc/ssh/ssh_config), tāpēc tur nav redzamas salasāmas IP adreses. Windows un macOS sistēmā tās ir salasāmas. Meklēšana visur darbojas ar:
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"
Dažreiz Jūs redzēsiet šādu brīdinājumu:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.Serveris uzrāda citu atslēgu nekā to, ko pazīst Jūsu klients. Tad ssh atsakās izveidot savienojumu. Ir divu veidu iemesli:
| Normāli | Aizdomīgi |
|---|---|
| Jūs esat pārinstalējuši VPS (jaunas host keys) | Jūs neko neesat mainījuši, tomēr atslēga ir cita |
| IP adrese ir piešķirta citam serverim | Jūs esat pieslēgušies svešam Wi-Fi tīklam |
| Jūs apzināti nomainījāt host keys | Pirkstu nospiedums konsolē atšķiras no tā, ko klients redz tagad |
Ja ir normāls izskaidrojums, vēlreiz pārbaudiet pirkstu nospiedumu konsolē un tikai pēc tam izdzēsiet veco rindu:
anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.Nākamajā savienojumā Jūs atkal saņemsiet pirmās reizes jautājumu un atkal veiksiet pārbaudi. Nekad neiestatiet StrictHostKeyChecking no, lai atbrīvotos no brīdinājuma: tā Jūs izslēdzat tieši to aizsardzību, par kuru ir runa.
Versijas baneris
Pirms kaut kas tiek šifrēts, klients un serveris nosūta viens otram teksta rindu: versijas baneri. Tas ir redzams ikvienam internetā. Jūs to varat apskatīt ar 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.5Šeit serveris norāda, kādu protokolu (2.0) un kādu programmatūru tas izmanto. Debian un Ubuntu tam pievieno pakotnes versiju. Tas nav noslēpums, kas būtu jāslēpj: uzbrucēji tik un tā izmēģina visu, un Jūs sevi aizsargājat ar atjauninājumiem (modulis 4), nevis ar citu baneri. Tomēr tas ir noderīgi: pēc banera Jūs no ārpuses varat redzēt, vai Jūsu serverī tiešām darbojas atjauninātā versija.
AlmaLinux un Rocky Linux
Pieteikšanās un pirkstu nospiedumi darbojas tāpat. Pakalpojumu sauc sshd, nevis ssh (systemctl status sshd). Banerī nav distribūcijas nosaukuma, tikai OpenSSH versija.
Kopsavilkums
- SSH ir šifrēts savienojums ar Jūsu serveri;
sshir klients,sshdir serveris portā 22. - Pirmajā savienojumā klients parāda host key pirkstu nospiedumu. Salīdziniet to ar komandas
ssh-keygen -lfizvadi konsolē, pirms ierakstātyes. - Klients saglabā atslēgu failā
~/.ssh/known_hostsun turpmāk brīdina pats (trust on first use). - "REMOTE HOST IDENTIFICATION HAS CHANGED" pēc pārinstalēšanas ir normāli; citādi tas ir aizdomīgi. Veco rindu dzēsiet tikai pēc pārbaudes, ar
ssh-keygen -R. - Versijas baneris ir publisks; aizsardzību sniedz atjauninājumi, nevis slēpšana.
Tests (quiz)
Uzdevums
Uzdevums Z1.3: Jūsu servera SSH baneris un pirkstu nospiedums. Ievadiet sava servera adresi, programmatūras versiju no banera (piemēram, OpenSSH_9.6p1) un ED25519 pirkstu nospiedumu, ko pieprasījāt konsolē ar ssh-keygen -lf. Programma izveido vienu savienojumu ar Jūsu SSH portu, nolasa baneri un host key un salīdzina. Tā nepiesakās.
Vairāk lasīt
- Pieteikšanās Jūsu VPS, izmantojot SSH (un SSH atslēgas izveide)
- Vairs nav piekļuves Jūsu VPS: ko darīt tagad?
- ssh-keygen(1), opcijas -l, -F un -R: https://manpages.debian.org/trixie/openssh-client/ssh-keygen.1.en.html
- ssh_config(5), StrictHostKeyChecking, FingerprintHash un HashKnownHosts: https://manpages.debian.org/trixie/openssh-client/ssh_config.5.en.html
- RFC 4253, 4.2. punkts (versijas baneris): https://www.rfc-editor.org/rfc/rfc4253.html
