Salt la conținut

Setări cookie-uri

Alegeți pentru fiecare tip ce cookie-uri permiteți. Puteți modifica oricând alegerea prin Setări cookie-uri, în partea de jos a fiecărei pagini. Declarație de confidențialitate

Necesare

Mereu active

Necesare pentru autentificare, pentru păstrarea coșului și pentru a vă reține alegerile. Acestea sunt mereu active.

Ce cookie-uri?
  • weboke_sessie, weboke_klant, weboke_remember: sesiunea și menținerea autentificării
  • weboke_basket: coșul de cumpărături
  • wkBtwIncl: afișarea prețurilor cu sau fără TVA
  • wok_cookies: alegerea privind cookie-urile, 12 luni

Măsoară ce reclamă duce la o vizită sau o comandă, ca să nu plătim pentru reclame care nu aduc nimic.

Ce cookie-uri?
  • Google Ads prin Google Tag Manager (_gcl_au, _gcl_aw), până la 90 de zile
  • OpenAI Ads, reclame în ChatGPT
  • wok_aff: prin ce partener ați ajuns la noi (program de afiliere), 60 de zile

4,6

Țară și limbă

Fiecare țară are propriul site, cu prețurile și TVA-ul pentru țara respectivă.

Vedeți

Prima autentificare SSH

Modulul 1: Primul dumneavoastră server · Timp de citire: 10 minute

Obiectivul lecției: După această lecție vă puteți conecta pentru prima dată prin SSH la serverul dumneavoastră, puteți verifica amprenta serverului înainte de a avea încredere în el și știți ce trebuie să faceți la avertismentul că identitatea serverului s-a schimbat.

Noțiuni cheie: SSH, client și server, portul 22, banner de versiune, host key, amprentă (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell și Terminal

Ce este SSH

SSH (Secure Shell) este conexiunea criptată prin care administrați un server de la distanță. Tastați pe propriul calculator, iar comenzile sunt executate pe server. Tot ce trece prin conexiune, inclusiv parola dumneavoastră, este criptat.

Există două părți:

  • clientul SSH de pe propriul calculator: programul ssh. Pe macOS și Linux este inclus implicit. Pe Windows 10 (începând cu versiunea 1809) și Windows 11, clientul OpenSSH face parte din Windows; îl folosiți în PowerShell sau în Windows Terminal. Dacă lipsește, îl adăugați din Setări, Caracteristici opționale, "Client OpenSSH". Programele cu interfață grafică, precum PuTTY, funcționează și ele, dar în acest curs folosim ssh.
  • serverul SSH de pe VPS: programul sshd (din OpenSSH). Ascultă implicit pe portul 22.

Autentificarea

Vă conectați cu un nume de utilizator și adresa serverului:

PS C:\Users\anna> ssh root@192.0.2.10

Sau cu un nume, dacă l-ați configurat în DNS (lecția 7.1):

anna@laptop:~$ ssh root@web1.example.com

Prima dată veți vedea ceva de genul acesta:

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])?

Acesta este cel mai important moment al lecției. Nu tastați orbește yes.

Cheia gazdei și amprenta

Fiecare server SSH are una sau mai multe host keys (chei ale gazdei): perechi de chei prin care serverul își dovedește identitatea. Părțile publice se află pe server în /etc/ssh/, de exemplu /etc/ssh/ssh_host_ed25519_key.pub. La fiecare conexiune, serverul arată că deține partea secretă.

O amprentă este un rezumat scurt (un hash) al unei astfel de chei publice. OpenSSH afișează implicit forma SHA256: SHA256: urmat de 43 de caractere.

Întrebarea "Are you sure you want to continue connecting?" înseamnă: calculatorul dumneavoastră nu cunoaște încă acest server. Cine garantează că discutați cu VPS-ul dumneavoastră și nu cu cineva care interceptează traficul? Nimeni, decât dacă dumneavoastră comparați amprenta cu o sursă de încredere.

Această sursă este consola furnizorului dumneavoastră (lecția 1.2). Acolo nu comunicați cu serverul prin rețea. Conectați-vă în consolă și afișați amprenta:

root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)

Dacă aceasta corespunde exact cu ce afișează clientul, tastați yes. Puteți lipi și amprenta însăși în loc de yes; atunci ssh o compară în locul dumneavoastră. Dacă diferă, vă opriți și aflați de ce (adresă IP greșită, server reinstalat sau ceva mai grav).

Atenție la tip: clientul menționează tipul (ED25519, ECDSA sau RSA). Comparați amprenta de același tip. Multe imagini afișează amprentele și în consolă la prima pornire (cloud-init), între rânduri precum BEGIN SSH HOST KEY FINGERPRINTS.

known_hosts și trust on first use

Dacă tastați yes, veți vedea:

Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.

Clientul salvează cheia în ~/.ssh/known_hosts (pe Windows C:\Users\<naam>\.ssh\known_hosts). De acum înainte, o compară automat la fiecare conexiune. Acest model se numește trust on first use (TOFU, încredere la prima utilizare): prima dată trebuie să verificați dumneavoastră, apoi clientul veghează.

De aceea această primă verificare este atât de importantă: dacă acceptați o cheie greșită, clientul nu vă va mai avertiza niciodată.

Dacă lucrați pe un calculator cu Debian sau Ubuntu, numele din known_hosts sunt implicit stocate sub formă de hash (HashKnownHosts yes în /etc/ssh/ssh_config), deci acolo nu veți vedea adrese IP lizibile. Pe Windows și macOS ele apar lizibil. Căutarea funcționează peste tot cu:

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"

Uneori veți vedea acest avertisment:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.

Serverul prezintă o altă cheie decât cea pe care o cunoaște clientul dumneavoastră. În acest caz, ssh refuză conectarea. Există două tipuri de cauze:

NormalSuspect
Ați reinstalat VPS-ul (chei noi ale gazdei)Nu ați schimbat nimic și totuși cheia este diferită
Adresa IP a fost atribuită altui serverSunteți conectat la o rețea wifi necunoscută
Ați înlocuit intenționat cheile gazdeiAmprenta din consolă diferă de ce vede acum clientul

Dacă există o explicație normală, verificați din nou amprenta în consolă și abia apoi ștergeți rândul vechi:

anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.

La următoarea conexiune veți primi din nou întrebarea de la prima dată și veți verifica din nou. Nu setați niciodată StrictHostKeyChecking no în configurația dumneavoastră pentru a scăpa de avertisment: astfel dezactivați exact protecția despre care este vorba.

Bannerul de versiune

Înainte ca ceva să fie criptat, clientul și serverul își trimit reciproc un rând de text: bannerul de versiune. Acesta este vizibil pentru oricine de pe internet. Îl puteți vedea cu 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

Serverul indică aici ce protocol (2.0) și ce software folosește. Debian și Ubuntu adaugă la final versiunea pachetului. Acesta nu este un secret pe care trebuie să-l ascundeți: atacatorii încearcă oricum totul, iar dumneavoastră vă protejați prin actualizări (modulul 4), nu printr-un alt banner. Totuși este util: din banner vedeți din exterior dacă serverul dumneavoastră rulează într-adevăr versiunea actualizată.

Pe AlmaLinux și Rocky Linux

Autentificarea și amprentele funcționează la fel. Serviciul se numește sshd în loc de ssh (systemctl status sshd). Bannerul nu conține numele distribuției, doar versiunea OpenSSH.

Rezumat

  • SSH este conexiunea criptată către serverul dumneavoastră; ssh este clientul, sshd serverul pe portul 22.
  • La prima conexiune, clientul afișează amprenta cheii gazdei. Comparați-o cu rezultatul comenzii ssh-keygen -lf din consolă înainte de a tasta yes.
  • Clientul salvează cheia în ~/.ssh/known_hosts și de acum înainte vă avertizează singur (trust on first use).
  • "REMOTE HOST IDENTIFICATION HAS CHANGED" este normal după o reinstalare; altfel este suspect. Ștergeți un rând vechi doar după verificare, cu ssh-keygen -R.
  • Bannerul de versiune este public; protecția vine din actualizări, nu din ascundere.

Test (quiz)

1. Cu ce comparați amprenta pe care ssh o afișează la prima conexiune?



2. Ce face ~/.ssh/known_hosts?



3. Ați reinstalat VPS-ul și primiți "REMOTE HOST IDENTIFICATION HAS CHANGED". Care este ordinea corectă?



4. De ce este prima verificare atât de importantă la trust on first use?



5. Ce arată bannerul de versiune al unui server SSH?



Exercițiu

Exercițiul Z1.3: Bannerul SSH și amprenta serverului dvs. Completați adresa serverului dumneavoastră, versiunea software din banner (de exemplu OpenSSH_9.6p1) și amprenta ED25519 pe care ați obținut-o în consolă cu ssh-keygen -lf. Programul face o singură conexiune la portul SSH, citește bannerul și cheia gazdei și le compară. Nu se autentifică.

Exercițiul Z1.3: Bannerul SSH și amprenta serverului dvs.

Nu ne autentificăm și nu încercăm nicio parolă sau cheie. Mai întâi arătați că serverul vă aparține: faceți clic pe "Afișați codul meu" și puneți pe serverul web al numelui de gazdă un fișier /.well-known/weboke-cursus-<code>.txt care conține doar acel cod. Îl preluăm direct de la fiecare adresă IP pe care o verificăm (IPv4 și IPv6 separat); o înregistrare TXT nu contează aici. Verificarea vine de la heavy.webawere.nl (185.158.167.16 și 2a07:ae80:100:0:185:158:167:16), nu de la serverul nostru web. Doar pentru cursanții înscriși; cel mult 6 verificări pe oră pentru fiecare server. La acest exercițiu stabilim o singură conexiune și citim doar bannerul și cheia serverului; nu apare nicio încercare de autentificare în jurnalul dvs.





Ceea ce completați și ceea ce găsim nu se salvează. Browserul dumneavoastră reține răspunsurile și dacă ați rezolvat exercițiul. Dacă sunteți autentificat, păstrăm în Cursurile mele doar faptul că exercițiul a fost (aproape) corect; și de acolo îl puteți șterge.

Lecturi suplimentare

Un moment…

Configurați domeniile

Stabiliți pentru fiecare domeniu nameserverele, legătura cu hostingul și cine devine titularul.

Se încarcă domeniile…