Cum se configurează cheile SSH pe CentOS 7

Introducere

SSH, sau secure shell, este un protocol criptat utilizat pentru a administra și comunica cu serverele. Atunci când lucrați cu un server CentOS, sunt șanse mari să vă petreceți cea mai mare parte a timpului într-o sesiune de terminal conectată la server prin SSH.

În acest ghid, ne vom concentra pe configurarea cheilor SSH pentru o instalare de vanilie CentOS 7. Cheile SSH oferă o modalitate simplă și sigură de conectare la serverul dvs. și sunt recomandate pentru toți utilizatorii.

Pasul 1 – Crearea perechii de chei RSA

Primul pas este crearea unei perechi de chei pe mașina client (de obicei calculatorul dumneavoastră):

  • ssh-keygen

În mod implicit, ssh-keygen va crea o pereche de chei RSA pe 2048 de biți, care este suficient de sigură pentru majoritatea cazurilor de utilizare (puteți trece opțional steagul -b 4096 pentru a crea o cheie mai mare de 4096 de biți).

După introducerea comenzii, ar trebui să vedeți următorul prompt:

Output
Generating public/private rsa key pair.Enter file in which to save the key (/your_home/.ssh/id_rsa):

Presați ENTER pentru a salva perechea de chei în subdirectorul .ssh/ din directorul dvs. personal, sau specificați o cale alternativă.

Dacă ați generat anterior o pereche de chei SSH, este posibil să apară următorul prompt:

Output
/home/your_home/.ssh/id_rsa already exists.Overwrite (y/n)?

Dacă alegeți să suprascrieți cheia de pe disc, nu vă veți mai putea autentifica folosind cheia anterioară. Fiți foarte atent atunci când selectați „da”, deoarece acesta este un proces distructiv care nu poate fi inversat.

Ar trebui să vedeți apoi următoarea solicitare:

Output
Enter passphrase (empty for no passphrase):

Aici, opțional, puteți introduce o frază de trecere securizată, ceea ce este foarte recomandat. O frază de trecere adaugă un nivel suplimentar de securitate pentru a împiedica utilizatorii neautorizați să se conecteze. Pentru a afla mai multe despre securitate, consultați tutorialul nostru How To Configure SSH Key-Based Authentication on a Linux Server.

Ar trebui să vedeți apoi următoarea ieșire:

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

Acum aveți o cheie publică și una privată pe care le puteți utiliza pentru a vă autentifica. Următorul pas este să plasați cheia publică pe serverul dvs. astfel încât să puteți utiliza autentificarea bazată pe cheia SSH pentru a vă conecta.

Pasul 2 – Copierea cheii publice pe serverul CentOS

Cel mai rapid mod de a copia cheia publică pe gazda CentOS este de a utiliza un utilitar numit ssh-copy-id. Datorită simplității sale, această metodă este foarte recomandată, dacă este disponibilă. Dacă nu aveți ssh-copy-id la dispoziție pe calculatorul client, puteți utiliza una dintre cele două metode alternative furnizate în această secțiune (copierea prin SSH pe bază de parolă sau copierea manuală a cheii).

Copierea cheii publice utilizând ssh-copy-id

Unitatea ssh-copy-id este inclusă în mod implicit în multe sisteme de operare, deci este posibil să o aveți disponibilă pe sistemul dvs. local. Pentru ca această metodă să funcționeze, trebuie să aveți deja acces SSH pe bază de parolă la serverul dvs.

Pentru a utiliza utilitarul, trebuie doar să specificați gazda la distanță la care doriți să vă conectați și contul de utilizator la care aveți acces SSH pe bază de parolă. Acesta este contul în care va fi copiată cheia dvs. publică SSH.

Sintaxa este:

Este posibil să vedeți următorul mesaj:

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

Acest lucru înseamnă doar că computerul dvs. local nu recunoaște gazda la distanță. Acest lucru se va întâmpla prima dată când vă conectați la o gazdă nouă. Tastați „yes” și apăsați ENTER pentru a continua.

În continuare, utilitarul va scana contul dvs. local pentru cheia id_rsa.pub pe care am creat-o mai devreme. Când găsește cheia, vă va solicita parola contului utilizatorului de la distanță:

Output
/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 [email protected]'s password:

Tastați parola (tastatura dvs. nu va fi afișată din motive de securitate) și apăsați ENTER. Utilitarul se va conecta la contul de pe gazda la distanță folosind parola pe care ați furnizat-o. Apoi va copia conținutul cheii dvs. ~/.ssh/id_rsa.pub într-un fișier din directorul principal ~/.ssh al contului de la distanță numit authorized_keys.

Ar trebui să vedeți următoarea ieșire:

Output
Number of key(s) added: 1Now try logging into the machine, with: "ssh '[email protected]'"and check to make sure that only the key(s) you wanted were added.

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

Copierea cheii publice folosind SSH

Dacă nu aveți ssh-copy-id la dispoziție, dar aveți acces SSH pe bază de parolă la un cont de pe server, puteți încărca cheile folosind o metodă SSH convențională.

Puteți face acest lucru folosind comanda cat pentru a citi conținutul cheii publice SSH de pe calculatorul nostru local și pentru a o transmite prin intermediul unei conexiuni SSH la serverul de la distanță.

De partea cealaltă, ne putem asigura că directorul ~/.ssh există și că are permisiunile corecte în contul pe care îl folosim.

Puteți apoi să transmiteți conținutul pe care l-am transmis într-un fișier numit authorized_keys din acest director. Vom folosi simbolul de redirecționare >> pentru a adăuga conținutul în loc să îl suprascriem. Acest lucru ne va permite să adăugăm chei fără a distruge cheile adăugate anterior.

Comanda completă arată astfel:

  • cat ~/.ssh/id_rsa.pub | ssh [email protected]_host "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Este posibil să vedeți următorul mesaj:

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

Acest lucru înseamnă că computerul local nu recunoaște gazda la distanță. Acest lucru se va întâmpla prima dată când vă conectați la o gazdă nouă. Tastați „yes” și apăsați ENTER pentru a continua.

După aceea, ar trebui să vi se ceară să introduceți parola contului de utilizator la distanță:

Output
[email protected]'s password:

După introducerea parolei, conținutul cheii id_rsa.pub va fi copiat la sfârșitul fișierului authorized_keys al contului de utilizator la distanță. Continuați la pasul 3 dacă acest lucru a avut succes.

Copierea manuală a cheii publice

Dacă nu aveți la dispoziție acces SSH pe bază de parolă la serverul dumneavoastră, va trebui să finalizați manual procesul de mai sus.

Vom anexa manual conținutul fișierului dumneavoastră id_rsa.pub la fișierul ~/.ssh/authorized_keys de pe calculatorul de la distanță.

Pentru a afișa conținutul cheii dvs. id_rsa.pub, tastați acest lucru în calculatorul dvs. local:

  • cat ~/.ssh/id_rsa.pub

Vă veți vedea conținutul cheii, care ar trebui să arate cam așa:

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== [email protected]

Accesați gazda dvs. de la distanță folosind orice metodă pe care o aveți disponibilă.

După ce aveți acces la contul dvs. de pe serverul la distanță, trebuie să vă asigurați că directorul ~/.ssh există. Această comandă va crea directorul, dacă este necesar, sau nu va face nimic dacă acesta 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 id_rsa.pub la sfârșitul fișierului authorized_keys, creându-l dacă este necesar, folosind această comandă:

  • echo public_key_string >> ~/.ssh/authorized_keys

În comanda de mai sus, înlocuiți public_key_string cu ieșirea din comanda cat ~/.ssh/id_rsa.pub pe care ați executat-o pe sistemul dvs. local. Ar trebui să înceapă cu ssh-rsa AAAA....

În cele din urmă, ne vom asigura că directorul ~/.ssh și fișierul authorized_keys au permisiunile corespunzătoare setate:

  • chmod -R go= ~/.ssh

Acest lucru înlătură în mod recursiv toate permisiunile „group” și „other” pentru directorul ~/.ssh/.

Dacă utilizați contul root pentru a configura chei pentru un cont de utilizator, este de asemenea important ca directorul ~/.ssh să aparțină utilizatorului și nu lui root:

  • chown -R sammy:sammy ~/.ssh

În acest tutorial, utilizatorul nostru se numește sammy, dar ar trebui să înlocuiți numele de utilizator corespunzător în comanda de mai sus.

Acum putem încerca autentificarea fără parolă cu serverul nostru Ubuntu.

Pasul 3 – Autentificarea la serverul CentOS folosind chei SSH

Dacă ați finalizat cu succes una dintre procedurile de mai sus, ar trebui să puteți să vă conectați la gazda de la distanță fără parola contului de la distanță.

Procesul de bază este același:

Dacă este prima dată când vă conectați la această gazdă (dacă ați folosit ultima metodă de mai sus), este posibil să vedeți ceva de genul:

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

Acest lucru înseamnă că computerul dvs. local nu recunoaște gazda la distanță. Tastați „yes” și apoi apăsați ENTER pentru a continua.

Dacă nu ați furnizat o frază de acces pentru cheia privată, veți fi conectat imediat. Dacă ați furnizat o frază de acces pentru cheia privată atunci când ați creat-o, vi se va cere să introduceți fraza de acces acum. După autentificare, o nouă sesiune shell ar trebui să se deschidă pentru dvs. cu contul configurat pe serverul CentOS.

Dacă autentificarea bazată pe cheie a avut succes, continuați pentru a afla cum să vă securizați și mai mult sistemul prin dezactivarea autentificării prin parolă.

Pasul 4 – Dezactivați autentificarea prin parolă pe server

Dacă ați reușit să vă conectați la contul dvs. folosind SSH fără parolă, ați configurat cu succes autentificarea bazată pe cheie SSH pentru contul dvs. Cu toate acestea, mecanismul dvs. de autentificare bazat pe parolă este încă activ, ceea ce înseamnă că serverul dvs. este încă expus atacurilor de forță brută.

Înainte de a finaliza pașii din această secțiune, asigurați-vă că fie aveți autentificarea bazată pe chei SSH configurată pentru contul root pe acest server, fie, de preferință, că aveți autentificarea bazată pe chei SSH configurată pentru un cont non-root pe acest server cu privilegii sudo. Acest pas va bloca autentificările bazate pe parolă, așa că este crucial să vă asigurați că veți putea obține în continuare acces administrativ.

După ce ați confirmat că contul dvs. la distanță are privilegii administrative, conectați-vă la serverul la distanță cu chei SSH, fie ca root, fie cu un cont cu privilegii sudo. Apoi, deschideți fișierul de configurare al daemonului SSH:

  • sudo vi /etc/ssh/sshd_config

În interiorul fișierului, căutați o directivă numită PasswordAuthentication. Aceasta poate fi comentată. Apăsați i pentru a introduce textul, apoi decomentați linia și setați valoarea la „nu”. Acest lucru va dezactiva posibilitatea de a vă conecta prin SSH folosind parolele conturilor:

/etc/ssh/sshd_config
...PasswordAuthentication no...

Când ați terminat de făcut modificări, apăsați ESC și apoi :wq pentru a scrie modificările în fișier și a ieși. Pentru a implementa efectiv aceste modificări, trebuie să repornim serviciul sshd:

  • sudo systemctl restart sshd.service

Ca măsură de precauție, deschideți o nouă fereastră de terminal și testați dacă serviciul SSH funcționează corect înainte de a închide această sesiune:

După ce ați verificat serviciul SSH, puteți închide în siguranță toate sesiunile curente ale serverului.

Demonul SSH de pe serverul dumneavoastră CentOS răspunde acum numai la chei SSH. Autentificarea bazată pe parolă a fost dezactivată cu succes.

Concluzie

Ar trebui să aveți acum autentificarea bazată pe chei SSH configurată pe serverul dumneavoastră, permițându-vă să vă conectați fără a furniza o parolă de cont.

Dacă doriți să aflați mai multe despre lucrul cu SSH, aruncați o privire la Ghidul nostru SSH Essentials.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.