Cum să adăugați chei SSH pe Ubuntu 20.04

Configurați o conectare securizată fără parolă la serverul Ubuntu la distanță folosind chei SSH

SSH este un protocol de rețea client-server securizat care ajută un computer client să se conecteze și să comunice cu un server la distanță. Conexiunea SSH asigură că comenzile care sunt tastate în terminal sunt trimise către serverul de la distanță printr-un canal criptat.

Există două tipuri de mecanisme de autentificare utilizate pentru conectarea la serverul de la distanță, autentificarea bazată pe parolă (supusă atacurilor cu forță brută) și autentificarea bazată pe chei SSH (care este foarte sigură).

În autentificarea bazată pe chei SSH, o pereche de chei este generată pe computerul client, numită cheie publică și cheie privată. O copie a acestei chei publice este disponibilă pe serverul de la distanță. Când un client trimite o cerere de conectare la server, serverul generează un șir aleator și îl criptează folosind cheia publică. Acest șir poate fi decriptat numai folosind cheia privată disponibilă pe computerul client. Această metodă asigură că serverul poate fi accesat numai de clienții care conțin cheia privată.

În acest ghid, vom vedea cum să configurați cheile SSH pe serverul Ubuntu 20.04 LTS.

Vedeți dacă aveți vreo cheie SSH pe computer

Pentru a verifica dacă o pereche de chei SSH există deja pe computerul dvs., tastați această comandă în terminal.

ls -l ~/.ssh/id_*.pub

Dacă comanda de mai sus revine Nu există un astfel de fișier sau director sau nu s-a gasit nici o potrivire, atunci înseamnă că perechea de chei SSH nu există.

Dacă aveți o pereche de chei SSH existentă, atunci puteți fie să utilizați aceeași pereche de chei pentru a accesa două servere la distanță, fie puteți crea și o pereche de chei diferită cu un nume diferit. Să trecem la pasul următor și să vedem cum să generăm chei SSH pentru ambele cazuri.

Crearea cheilor SSH pe un computer client

Pentru a genera o nouă pereche de chei SSH pe computer, tastați comanda așa cum se arată mai jos.

ssh-keygen

În mod implicit, cheile SSH sunt de 2048 de biți. Pentru o mai bună securitate, dacă doriți să generați chei SSH cu biți mai mari, atunci utilizați următoarea comandă.

ssh-keygen -b 4096

Dacă comanda rulează cu succes, atunci următorul mesaj va fi afișat pe ecran.

generarea perechii de chei rsa public/privat. Introduceți fișierul în care să salvați cheia (/home/harshit/.ssh/id_rsa):

Acum, dacă nu aveți nicio pereche de chei SSH pe computer, apăsați pur și simplu introduce, dar dacă aveți o cheie SSH existentă, salvați cheia cu un alt nume de fișier, așa cum se arată mai jos.

Introduceți fișierul în care să salvați cheia (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_xxx

Inlocuieste xxx la sfârșitul numelui fișierului cu un nume adecvat, așa cum se arată mai jos și apăsați introduce.

Introduceți fișierul în care să salvați cheia (/home/your_name/.ssh/id_rsa): /home/your_name/.ssh/id_rsa_client_1

Următorul prompt vă va cere să introduceți o frază de acces de o lungime arbitrară, aceasta va asigura securitatea pe două niveluri pe dispozitiv.

Introduceți expresia de acces (gol fără expresie de acces): introduceți din nou aceeași expresie de acces:

Introducerea acestei expresii de acces se va asigura că, chiar dacă o persoană are acces la cheia dvs. privată, atunci nu va putea accesa serverul dvs. la distanță fără această expresie de acces.

Odată ce întregul proces este finalizat, pe ecran apare următorul mesaj.

ssh-keygen -b 4096 Odată ce întregul proces de generare a cheii SSH este complet, următorul mesaj apare pe ecran.

Cheile SSH au fost generate pe sistemul dumneavoastră. Acum este timpul să copiați cheia publică pe serverul de la distanță.

Copierea cheii publice pe serverul Ubuntu la distanță

Cea mai simplă și rapidă metodă de a copia cheia publică pe serverul de la distanță este folosirea ssh-copy-id utilitate. Dar dacă acest utilitar nu este disponibil pe computer din anumite motive, atunci puteți utiliza și alte metode furnizate în această secțiune.

Folosind utilitarul ssh-copy-id

The ssh-copy-id utilitarul este disponibil în mod implicit pe mașina dvs. Ubuntu, care copiază cheia publică de pe dispozitiv în directorul corespunzător al mașinii Ubuntu la distanță.

Pentru a copia cheia publică ssh, introduceți pur și simplu comanda în terminal, așa cum se arată mai jos.

ssh-copy-id nume utilizator@nume gazdă

Inlocuieste nume de utilizator și nume de gazdă în comanda de mai sus cu numele de utilizator și numele de gazdă al serverului dvs.

Următorul mesaj va apărea pe terminalul dvs. dacă vă conectați la gazdă pentru prima dată, tastați da și apăsați introduce.

Autenticitatea gazdei „172.105.XX.XX (172.105.XX.XX)” nu poate fi stabilită. Amprenta cheii ECDSA este xx:xx:xx:xx:77:fe:73:xx:xx:55:00:ad:d6:xx:xx:xx. Sigur doriți să continuați conectarea (da/nu)? da

Acum ssh-copy-id utilitarul va scana pentru fișierul cu numele id_rsa.pub care conține cheia publică SSH. Odată ce procesul de scanare este finalizat, vă va solicita să introduceți parola serverului dvs. la distanță, așa cum se arată mai jos. Introduceți parola și apăsați introduce.

/usr/bin/ssh-copy-id: INFO: încercarea de a se autentifica cu noile chei, pentru a filtra pe cele care sunt deja instalate /usr/bin/ssh-copy-id: INFO: 1 cheie(e) ) rămân de instalat -- dacă vi se solicită acum, este să instalați noile chei [email protected] parola:

Odată ce cheia este adăugată, următorul mesaj va apărea pe terminalul dvs. ca ieșire.

Numărul de chei adăugate: 1 Acum încercați să vă conectați la mașină, cu: „ssh '[email protected]'” și verificați pentru a vă asigura că au fost adăugate numai cheile dorite.

În cazul în care aveți mai multe chei SSH pe computerul dvs. client, atunci pentru a copia cheia publică corespunzătoare pe computerul dvs. la distanță, tastați comanda în modelul prezentat mai jos.

ssh-copy-id -i id_rsa_xxx.pub nume utilizator@gazdă

💡 Sfat

Nu uitați să puneți .pub la sfârșitul numelui fișierului în timp ce introduceți în terminal.

Copierea cheii publice prin metoda tubulaturii

Tastați următoarea comandă în terminal dacă ssh-copy-id utilitatea nu este disponibilă. Această comandă poate părea puțin mai lungă, dar funcționează corespunzător.

cat ~/.ssh/id_rsa.pub | ssh remote_username@server_ip_address "mkdir -p ~/.ssh && atingeți ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

A inlocui nume_de_utilizator la distanță și adresa IP a serverului cu numele de utilizator și adresa IP.

Dacă aveți mai multe chei SSH disponibile pe computer, înlocuiți-l id_rsa.pub cu fișierul cheie publică SSH la alegere. De exemplu, id_rsa_client_1.pub.

Introduceți parola utilizatorului de la distanță când vi se solicită și apăsați introduce.

Parola lui [email protected]:

Odată ce ați introdus parola, id_rsa.pub fișierul va fi copiat în chei_autorizate fișierul serverului la distanță.

Copierea manuală a cheii publice

Utilizați această metodă atunci când nu aveți acces la sistemul dvs. de la distanță prin autentificare prin parolă.

Deschide id_rsa.pub fișier folosind pisică comanda din terminal. De asemenea, îl puteți deschide dintr-un editor de text, scopul fiind doar de a copia conținutul fișierului.

cat ~/.ssh/id_rsa.pub

Conținutul fișierului va arăta ca, așa cum se arată mai jos.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQComjFtuHvHQ67uf3RXg2wgK4EtxBvBvLCtlc4chG + nJ1cbuJjJ6G8az4xsRN1Q7hrV4dYR81Tk3gRApiMdGcMvInU3Vb7Wq3nh9GS4xnLRH1wvb149wogum2MycIES69Xh0cib + VvJyZ + dGO8zRNT64 + SvfiecRV0llnBGWDRqrIGtMHJkKz7VDKuSyzDit / Ck1NFXxC6Plw3cEMOhWHycm8bnSHSoVpr95ySxxnokX4 / 9iAlvOovxTpMpmDaDvuHKgHxcsOv9Q4sz // 6Hy / 65 + qqmiuLyuIQXjDiiYTjHTx + VNi6S0iMLoN6XgDLp0MfG6kLvZ0Z + csqdvIDQfMuH your_name @ your_PC

Acum, conectați-vă la serverul dvs. de la distanță și inserați conținutul copiat folosind comanda afișată mai jos. Inlocuieste mai sus cu conținutul copiat.

echo above_string >> ~/.ssh/authorized_keys

Configurarea mai multor chei SSH (Opțional)

Acest pas este pentru persoanele care au mai multe chei SSH configurate pe computerul lor client. Omiteți această secțiune dacă aveți o singură configurare a cheii SSH.

Pentru a gestiona mai multe chei SSH, acum vom crea un config dosar în interiorul .ssh director folosind comanda prezentată mai jos.

cd ~/.ssh vim config

Tip i pentru a intra în modul de comandă și a tasta detaliile mai multor gazde, așa cum se arată în exemplul următor:

Gazdă server-ubuntu-server HostName 172.105.XX.XX Rădăcină utilizator IdentityFile ~/.ssh/id_rsa_client_1 Gazdă remote-ubuntu-server Nume gazdă 172.106.XX.XX Rădăcină utilizator IdentityFile ~/.ssh/id_rsa_client_2

În mod similar, introduceți detaliile altor servere la distanță și cheile acestora. Odată ce procesul este finalizat, apăsați Esc și :wq pentru a salva și a ieși.

Acum, procesele ulterioare sunt aceleași pentru ambele chei SSH simple sau multiple pe computerul client.

Conectați-vă la serverul dvs. de la distanță folosind cheile SSH

Odată ce procesul de copiere a cheii publice este finalizat, conectați-vă la serverul dvs. la distanță tastând comanda așa cum se arată mai jos.

ssh remote_username@server_ip_address

Dacă ați furnizat expresia de acces în timp ce generați perechea de chei, vi se va solicita să o introduceți. O nouă sesiune se va deschide după finalizarea procesului de autentificare.

Acum ați configurat cu succes autentificarea bazată pe cheile SSH pe serverul dvs. de la distanță. Dar autentificarea bazată pe parolă este încă activă pe serverul dvs., ceea ce înseamnă că serverul dvs. la distanță este încă predispus la atacuri cu forță brută.

Deci acum vom dezactiva complet mecanismul de conectare bazat pe parolă de pe serverul nostru la distanță.

Dezactivați mecanismul de conectare bazat pe parolă

Înainte de a face modificări, asigurați-vă că utilizatorul root sau orice utilizator activat sudo pentru contul dvs. la distanță are acces la serverul dvs. folosind sistemul de autentificare bazat pe chei SSH. Acest pas va bloca sau dezactiva complet autentificarea bazată pe parolă, așa că este esențial ca cel puțin un privilegiu de utilizator root să aibă acces la server prin cheia SSH.

Conectați-vă la serverul Ubuntu la distanță și tastați comanda prezentată mai jos.

sudo vim /etc/ssh/sshd_config
  • presa Esc, / și tastați „PasswordAuthentication” și apăsați introduce.
  • Acum apăsați i și schimbați valoarea „PasswordAuthentication yes” în „PasswordAuthentication no”.
  • presa Esc și repetați procesul de mai sus pentru a găsi „ChallengeResponseAuthentication”, „UsePAM” și schimbați-le valorile în Nu de asemenea.
PasswordAuthentication nu ChallengeResponseAuthentication nu UsePAM nr

Odată ce toate valorile sunt setate la Nu, presa Esc, tip :wq și lovit introduce.

Pentru a activa toate modificările, reporniți ssh serviciu folosind comanda de mai jos.

sudo systemctl reporniți ssh

Acum deschideți o nouă fereastră de terminal pe computer și verificați dacă autentificarea cu cheia SSH funcționează corect înainte de a închide sesiunea curentă.

Odată ce procesul de verificare este finalizat, închideți toate sesiunile care rulează.

Acum am configurat cu succes autentificarea bazată pe chei SSH pe serverul nostru Ubuntu 20.04. Acum nimeni nu se poate conecta la serverul dvs. folosind un mecanism de conectare bazat pe parole.