Situatie
SSH, sau shell securizat, reprezintă un protocol criptat folosit pentru administrarea și comunicarea cu serverele. În momentul în care lucrați cu un server cu Ubuntu, sunt șanse foarte mari ca să petreceți majoritatea timpului într-o sesiune tip terminal conectată la server prin SSH.
Cheile SSH asigură o modalitate ușoară și sigura de conectare la serverul personal și este recomandată pentru toți utilizatorii.
Solutie
Pasi de urmat
- Creați perechea de chei RSA
Primul pas este să creați o pereche de chei pe o mașină client (de obicei computerul personal), presupunând ca folosiți Linux, și aveți acces la un terminal:
$ ssh-keygen
Implicit aplicația ssh-keygen va crea o pereche de chei RSA pe 2048 de biți, care este destul de sigură pentru majoritatea scenariilor (puteți, totuși, dacă doriți, folosi opțiunea -b 4096 pentru a crea o cheie cu o criptare mai puternică pe 4096 de biți).
După ce ați introdus comanda, ar trebui să vedeți afișat următorul mesaj:
Mesaj afișat :
Generating public/private rsa key pair. Enter file in which to save ( /utilizator/ .ssh/id_rsa):
Apăsați enter pentru a salva perechea de chei în subdirectorul .ssh/ din directorul home personal, sau specificați o cale alternativă.
Dacă ați mai generat anterior vreo pereche de chei SSH, puteți vedea afișat următorul mesaj:
Mesaj afișat :
/home/utilizator/ .ssh/id_rsa already exists. Overwrite (y/n)?
Dacă alegeți să suprascrieți cheia pe disc, nu veți mai putea fi capabili niciodată să vă autentificați folosind cheia anterioară. Fiți foarte atenți când selectați da, deoarece acest proces distructiv nu este reversibil.
Ar trebui să vedeți următorul mesaj:
Mesaj afișat:
Enter passpharse (empty for no passhrase):
Aici puteți introduce opțional o parolă sigură, o procedură recomandată pentru întărirea securității. O parolă adaugă încă un nivel de securitate care previne accesul neautorizat al altor utilizatori.
Astfel, ar trebui să vedeți următorul mesaj:
Acum aveți o cheie publică și una privată pe care le puteți folosi pentru autentificare. Următorul pas este transferul cheii publice pe serverul dvs. țintă pentru a putea folosi autentificarea SSH bazată pe chei la conectare.
Copierea cheii publice în serverul Ubuntu
Cea mai rapidă metodă de a copia cheia publică pe mașina Ubuntu este prin folosirea utilitarul ssh-copy-id. Datorită simplității, această metodă este recomandată, dacă este disponibilă. Dacă nu aveți ssh-copy-id disponibil pe sistemul dvs., puteți folosi una dintre aceste două metode alternative oferite în această secțiune (copierea cu SSH bazat pe parolă, sau copierea manuală a fișierului cu cheia publică).
Copierea unei chei publice folosind ssh-copy-id
Utilitarul ssh-copy-id este inclus, în mod implicit, în multe sisteme de operare, așa că s-ar putea să-l aveți instalat pe calculatorul dvs., (vorbim de SO Linux). Pentru ca această metodă să funcționeze, trebuie să aveți deja acces SSH cu autentificare bazată pe parolă la serverul dvs.
Pentru a folosi utilitarul, pur și simplu va trebui să specificați gazda de la distanță la care doriți să vă conectați și utilizatorul cu parola de acces SSH. Practic acesta va fi contul în care cheia dvs publică va fi copiată.
Sintaxa este următoarea:
$ ssh-copy-id utilizator@gazda_la_distanță
S-ar putea să vedeți următorul mesaj afisat:
Mesaj afișat:
The authenticity of host ‘203.0.113.1 (203.0.113.1)’ can’t be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Asta înseamnă că sistemul dvs. nu recunoaște gazda de la distanță. De obicei, se întâmplă în momentul în care vă conectați prima dată la o nouă gazdă (server). Tastați „yes” și apăsați ENTER pentru a continua.
Apoi, utilitarul va scana contul dvs. local după fișierul cheie id_rsa.pub care a fost creat mai devreme. În momentul în care îl găsește, vă va cere parola contului de utilizator de la distanță:
Mesaj afișat:
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys
username@203.0.113.1’s password:
ntroduceți parola (parola nu va vi afișată pentru motive de securitate) și apăsați ENTER. Utilitarul se va conecta la contul de la distanță cu ajutorul parolei introduse. Apoi va copia conținutul fișierului cheie ~/.ssh/id_rsa.pub într-un alt fișier denumit authorized_keys, de pe sistemul la distanță în directorul utilizatorului ~/.ssh.
Astfel, ar trebui să vedeți următorul mesaj:
Mesaj afișat:
Output:
Number of key(s) added: 1
Now try logging into the machine, with: “ssh ‘username@203.0.113.1′”
and check to make sure that only the key(s) you wanted were added.
Copierea unei chei publice cu ajutorul SSH
Dacă nu aveți utilitarul ssh-copy-id la îndemână, dar aveți acces SSH, bazat pe parolă, la un cont de pe serverul dvs., puteți încărca cheile folosind o metodă convențională prin protocolul SSH.
Putem face asta folosind comanda cat pentru a citi conținutul cheii publice SSH de pe computerul dvs. și apoi trimiterea acesteia printr-o conexiune SSH la către serverul de la distanță.
Pe de altă parte, ne putem asigura că directorul ~/.ssh există și are permisiunile corecte al contului pe care îl folosim.
Putem apoi pune conținutul într-un fișier denumit authorized_keys în acest director. Vom folosi simbolul de redirecționare >> pentru adăuga conținutul în loc să îl suprascriem. Astfel, acest procedeu, ne va permite să adăugăm chei fără să le distrugem pe cele adăugate anterior.
Comanda completă arată cam așa:
$ cat ~/.ssh/id_rsa.pub | ssh utilizator@gazdă_la_distanță “mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys”
Veți vedea următorul mesaj afișat:
Mesaj afișat:
Output:
The authenticity of host ‘203.0.113.1 (203.0.113.1)’ can’t be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Asta înseamnă că sistemul dvs. nu recunoaște gazda de la distanță. De obicei, se întâmplă în momentul în care vă conectați prima dată la o nouă gazdă (server). Tastați „yes” și apăsați ENTER pentru a continua.
Apoi, ar trebui să vi se ceară să introduceți parola pentru contul de utilizator de la distanță:
Mesaj afișat:
Output:
username@203.0.113.1’s password:
Autentificare pe serverul Ubuntu folosind chei SSH
Dacă ați terminat cu succes una din procedurile de mai sus, ar trebui să fiți capabili să vă conectați la serverul dvs de la distanță fără a mai folosi parola contului de utilizator.
Procedeul de bază este asemănător:
$ ssh utilizator@gazda_la_distanță
Dacă este prima dată când va conectați la această gazdă (asta dacă ați folosit ultima metodă de mai sus), veți vedea afișat un mesaj de genul:
$ The authenticity of host ‘203.0.113.1 (203.0.113.1)’ can’t be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes
Asta înseamnă că sistemul dvs. local nu recunoaște gazda de la distanță. Tastați „yes” și apoi apăsați ENTER pentru a continua.
Dacă nu ați setat o parolă pentru cheia dvs. privată, vă veți conecta imediat. Dacă, totuși, ați setat o parolă pentru cheia privată vi se va cere să o introduceți imediat (atenție, ceea ce tastați nu va fi afișat în terminal din motive de securitate). După autentificare, o nouă sesiune pentru terminal se ca deschide cu utilizatorul configurat pe serverul Ubuntu.
Dacă autentificarea cu fișier cheie a avut succes, continuați să învățați cum să vă securizați sistemul și mai mult prin dezactivarea autentificării bazată pe parolă.
Dezactivați autentificarea cu parolă de pe serverul dvs.
Dacă ați fost capabili să vă autentificați la contul dvs. fără parolă, înseamnă că ați configurat cu succes autentificarea SSH bazată pe cheie SSH pentru acel cont. În orice caz, mecanismul de autentificare bazat pe parolă rămâne încă activ, ceea ce înseamnă că serverul dvs. este încă expus atacurilor de tip „brute-force”.
Înainte de a completa pașii din această secțiune, asigurați-vă că aveți configurată autentificarea SSH bazată pe chei pe acest server pentru contul root, sau de preferat, să aveți configurat pentru un cont non-root cu privilegii sudo. Acest pas va bloca autentificarea bazată pe parolă, așa că trebuie să vă asigurați ca veți putea fi totuși capabili sa primiți drepturi administrative.
Imediat ce ați confirmat ca utilizatorul de la distanță are privilegii administrative, conectați-vă la serverul de la distanță cu cheile SSH, fie sub contul root sau cu un cont cu privilegii sudo. Apoi, deschideți fișierul de configurare al demonului SSH:
$ sudo nano /etc/ssh/sshd_config
În interiorul fișierului, căutați după o instrucțiune denumită PasswordAuthentication. Aceasta poate fi inactiva prin simbolul de comentariu # Activați instrucțiunea prin ștergerea # și setați valoare la „no”. Aceasta va dezactiva posibilitatea de conectare prin SSH folosind parola contului:
Conținut fisier:
…
PasswordAuthentication no
…
Salvați și închideți fișierul în momentul în care ați terminat prin apăsarea tastelor CTRL + X, apoi apăsați Y pentru confirmarea salvării fișierului și în final ENTER pentru a ieși din nano. Pentru a implementa în mod efectiv aceste schimbări, trebuie sa repornim serviciul sshd:
$ sudo systemctl restart ssh
Ca și precauție, deschideți o nouă fereastra terminal și testați dacă serviciul SSH funcționează corect înainte de a închide această sesiune:
$ ssh utilizator@gazda_la_distanță
După ce ați verificat propriul serviciu SSH, puteți închide în siguranță toate sesiunile curente cu serverul.
Demonul SSH de pe serverul dvs. Ubuntu răspunde acum numai la autentificarea SSH cu chei criptografice. Autenticficarea bazată pe parolă a fost dezactivată cu succes.
Leave A Comment?