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:
OutputGenerating 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:
OutputEnter 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:
OutputYour 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:
OutputThe 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:
OutputNumber 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:
OutputThe 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:
Outputssh-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:
OutputThe 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:
...PasswordAuthentication no...
Salvați și închideți fișierul când ați terminat apăsând CTRL
X
, 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.