Cum să configurez chei SSH în Ubuntu 18.04

Introducere

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.

În acest tutorial, vom învață cum să config urăm chei SSH pentru o distribuție Ubuntu 18.04 proaspăt instalată. Cheile SSH asigură o modalitate ușoară și sigura de conectare la serverul personal și este recomandată pentru toți utilizatorii.

Pasul 1 — 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 the key (/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 passphrase (empty for no passphrase):

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:

Mesaj afisat:

Your identification has been saved in /utilizator/.ssh/id_rsa.
Your public key has been saved in /utilizator/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
|     ..o         |
|   E o= .        |
|    o. o         |
|        ..       |
|      ..S        |
|     o o.        |
|   =o.+.         |
|. =++..          |
|o=++.            |
+-----------------+

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.

Pasul 2 — 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:

Introduceț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.

În acest punct, cheia dvs.id_rsa.pub a fost încărcată în contul serverului de la distanță. Puteți continua cu pasul 3.

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:

După introducerea parolei, conținutul cheii dvs.id_rsa.pub va fi copiat la finalul fișierului authorized_keys al contului de utilizator de la distanță. Continuați cu pasul 3 dacă ați reușit.

Copierea unei chei publice manual

Dacă nu aveți acces SSH bazat pe parolă la serverul dvs., va trebui să completați acest proces manual.

Vom atașa manual conținutul fișierului dvs.id_rsa.pub în fișierul ~/.ssh/authorized_keys de pe serverul de la distanță.

Pentru a afișa conținutul cheii dvs. id_rsa.pub, tastați următoarea comandă pe calculatorul dvs. local:

$ cat ~/.ssh/id_rsa.pub

Veți vedea afișat conținutul cheii, care ar trebui să arate ceva de genu:

Mesaj afișat:

Output
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== utilizator@test

Accesați serverul de la distanță folosind orice metodă aveți la dispoziție.

Imediat ce aveți acces la contul dvs. de pe serverul de la distanță, ar trebui să vă asigurați că directorul ~/.ssh există. Această comandă va crea directorul dacă este necesar, sau nu va face nimic dacă există deja:

$ mkdir -p ~/.ssh

Acum puteți crea sau modifica fișierul authorized_keys din acest director. Puteți adăuga conținutul fișierului dvs. id_rsa.pub la sfârșitul fișierului authorized_keys, generându-l dacă este necesar, cu ajutorul acestei comezi:

$ echo șir_caractere_cheie_publică >> ~/.ssh/authorized_keys

În comanda de mai sus, înlocuiți șir_caractere_cheie_publică cu ceea ce ați obținut din comanda cat ~/.ssh/id_rsa.pub pe care ați executat-o pe calculatorul dvs. local. Ar trebui să înceapă cu ssh-rsa AAAA....

În final, ne asigurăm că directorul ~/.ssh și fișierul authorized_keys au permisiunile corecte:

$ chmod -R go= ~/.ssh

Această comandă șterge toate permisiunile de “grup” și “alții” pentru directorul ~/.ssh/.

Dacă folosiți contul root pentru a seta cheile pentru un cont de utilizator, este, deasemenea, important ca directorul ~/.sshsă aparțină utilizatorului și nu contului root:

$ chown -R utilizator:utilizator ~/.ssh 

În acest tutorial utilizatorul nostru este denumit generic utilizator dar va trebui să-l înlocuiți cu utilizatorul corect atunci când folosiți comanda de mai sus.

Acum puteți încerca autentificarea fără parolă, bazată pe cheie criptografică, pentru serverul dvs. Ubuntu.

Pasul 3 — 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ă.

Pasul 4 — 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.

Concluzie

Acum ar trebui să aveți configurată pe serverul dvs. autentificarea bazată pe chei, ceea ce vă permite să vă conectați fără să introduceți o parolă.

Dacă doriți sa învățați mai multe despre lucrul cu SSH, vă invit să studiați și Ghid esențial de lucru cu SSH.

root

Un entuziast pasionat de tot ceea ce înseamnă Linux și Open Source și un energic promotor. Deschis la orice proiecte bazate pe aceste tehnologii.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest sit folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.

Share via
Copy link
Powered by Social Snap