Cum se configurează tastele SSH pe Ubuntu 16.04

Introducere

SSH, sau Secure shell, este un protocol criptat utilizat pentru administrarea și comunicarea cu serverele. Când lucrați cu un server Ubuntu, este posibil să vă petreceți cea mai mare parte a timpului într-o sesiune de terminal conectată la serverul dvs. prin SSH.

în acest ghid, ne vom concentra pe Configurarea cheilor SSH pentru o instalare vanilla Ubuntu 16.04. Tastele SSH oferă o modalitate ușoară și sigură de conectare la serverul dvs. și sunt recomandate tuturor utilizatorilor.

Pasul 1 — Creați perechea de chei RSA

primul pas este să creați o pereche de chei pe mașina client (de obicei computerul dvs.):

  • ssh-keygen

implicitssh-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 în-b 4096 pentru a crea o cheie mai mare de 4096 biți).

după introducerea comenzii, ar trebui să vedeți următoarea ieșire:

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

apăsațiENTER pentru a salva perechea de chei în subdirectorul.ssh/ din directorul principal sau specificați o cale alternativă.

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

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

dacă alegeți să suprascrieți cheia pe disc, nu veți mai putea să vă autentificați folosind cheia anterioară. Fiți foarte atenți atunci când selectați Da, Deoarece acesta este un proces distructiv care nu poate fi inversat.

ar trebui să vedeți următorul prompt:

Output
Enter passphrase (empty for no passphrase):

aici puteți introduce opțional o frază de acces sigură, care este foarte recomandată. O frază de acces 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 despre cum să configurați autentificarea bazată pe chei SSH pe un Server Linux.

ar trebui să vedeți 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 username@remote_hostThe key's randomart image is:+------+| ..o || E o= . || o. o || .. || ..S || o o. || =o.+. ||. =++.. ||o=++. |+-----------------+

acum aveți o cheie publică și privată pe care o 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 SSH-key pentru a vă conecta.

Pasul 2 — copiați cheia publică pe serverul Ubuntu

cel mai rapid mod de a copia cheia publică pe gazda Ubuntu este să utilizați un utilitar numitssh-copy-id. Datorită simplității sale, această metodă este foarte recomandată dacă este disponibilă. Dacă nu avețissh-copy-id disponibil pentru dvs. pe mașina dvs. client, puteți utiliza una dintre cele două metode alternative furnizate în această secțiune (copierea prin SSH bazată pe parolă sau copierea manuală a cheii).

copierea cheii publice folosind ssh-copy-id

instrumentulssh-copy-id este inclus în mod implicit în multe sisteme de operare, deci este posibil să îl aveți disponibil pe sistemul dvs. local. Pentru ca această metodă să funcționeze, trebuie să aveți deja acces SSH bazat pe 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 la parolă. Acesta este contul în care va fi copiată cheia SSH publică.

sintaxa este:

  • ssh-copy-id username@remote_host

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

aceasta î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 nouă gazdă. Tastați „da”și apăsați ENTER pentru a continua.

apoi, utilitarul vă va scana contul local pentruid_rsa.pub cheie pe care am creat-o mai devreme. Când găsește cheia, vă va solicita parola contului utilizatorului 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:

introduceți parola (tastarea dvs. nu va fi afișată din motive de securitate) și apăsațiENTER. Utilitarul se va conecta la contul de pe gazda de la distanță folosind parola pe care ați furnizat-o. Acesta va copia apoi conținutul~/.ssh/id_rsa.pub cheie într-un fișier în contul de la distanță acasă ~/.ssh director 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, cheiaid_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țissh-copy-id disponibil, dar aveți acces SSH bazat pe parolă la un cont de pe serverul dvs., puteți încărca cheile utilizând o metodă SSH convențională.

putem face acest lucru folosind comandacat pentru a citi conținutul cheii SSH publice de pe computerul nostru local și pentru a face acest lucru printr-o conexiune SSH la serverul de la distanță.

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

putem apoi să transmitem conținutul pe care l-am transmis într-un fișier numitauthorized_keys în 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 username@remote_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

aceasta î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 nouă gazdă. Tastați „da”și apăsați ENTER pentru a continua.

ulterior, ar trebui să vi se solicite să introduceți parola contului de utilizator la distanță:

Output
[email protected]'s password:

după introducerea parolei, conținutul cheiiid_rsa.pub va fi copiat la sfârșitul fișieruluiauthorized_keys al contului utilizatorului la distanță. Continuați la Pasul 3 dacă acest lucru a avut succes.

copierea manuală a cheii publice

dacă nu aveți acces SSH bazat pe parolă la serverul dvs. disponibil, va trebui să finalizați manual procesul de mai sus.

vom adăuga manual conținutul fișieruluiid_rsa.pub la fișierul~/.ssh/authorized_keys de pe aparatul dvs. la distanță.

pentru a afișa conținutulid_rsa.pub cheie, tastați acest lucru în computerul local:

  • cat ~/.ssh/id_rsa.pub

veți vedea conținutul cheii, care ar trebui să arate ceva de genul asta:

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== demo@test

accesați gazda la distanță folosind orice metodă aveți disponibilă.

odată ce aveți acces la contul dvs. pe serverul de la distanță, trebuie să vă asigurați că există directorul~/.ssh. 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 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 local. Ar trebui să înceapă cu ssh-rsa AAAA....

în cele din urmă, ne vom asigura că ~/.ssh director și authorized_keys fișier au permisiunile corespunzătoare stabilite:

  • chmod -R go= ~/.ssh

Acest lucru elimină recursiv toate permisiunile „grup” și „alte” pentru directorul~/.ssh/.

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

  • chown -R sammy:sammy ~/.ssh

în acest tutorial utilizatorul nostru este numit 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 — Autentificați-vă pe serverul Ubuntu folosind tastele SSH

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

procesul de bază este același:

  • ssh username@remote_host

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 acesta:

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

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

dacă nu ați furnizat o expresie de acces pentru cheia dvs. privată, veți fi conectat imediat. Dacă ați furnizat o frază de acces pentru cheia privată atunci când ați creat cheia, vi se va solicita să o introduceți acum (rețineți că apăsările de taste nu se vor afișa în sesiunea terminal pentru securitate). După autentificare, o nouă sesiune shell ar trebui să se deschidă pentru dvs. cu contul configurat pe serverul Ubuntu.

dacă autentificarea bazată pe chei a avut succes, continuați să aflați cum să vă securizați în continuare sistemul dezactivând autentificarea prin parolă.

Pasul 4 — dezactivați autentificarea parolei pe serverul dvs.

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

înainte de a finaliza pașii din această secțiune, asigurați-vă că aveți autentificarea bazată pe chei SSH configurată pentru contul root pe acest server sau, de preferință, că aveți autentificarea bazată pe chei SSH configurată pentru un cont non-root pe acest server cu privilegiisudo. Acest pas va bloca conectările bazate pe parolă, astfel încât asigurarea faptului că veți putea obține în continuare acces administrativ este crucială.

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

  • sudo nano /etc/ssh/sshd_config

în interiorul fișierului, căutați o directivă numităPasswordAuthentication. Acest lucru poate fi comentat. Decomentați linia și setați valoarea la „nu”. Acest lucru vă va dezactiva capacitatea de a vă conecta prin SSH folosind parolele contului:

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

Salvați și închideți fișierul când ați terminat apăsând CTRLX, apoi Y pentru a confirma salvarea fișierului și, în final, ENTER pentru a ieși din Nano. Pentru a implementa efectiv aceste modificări, trebuie să repornim sshd service:

  • sudo systemctl restart ssh

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:

  • ssh username@remote_host

după ce ați verificat serviciul SSH, puteți închide în siguranță toate sesiunile de server curente.

demonul SSH de pe serverul Ubuntu răspunde acum doar la tastele SSH. Autentificarea bazată pe parolă a fost dezactivată cu succes.

concluzie

acum ar trebui să aveți autentificarea bazată pe chei SSH configurată pe serverul dvs., 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ă.