Despre Linux

  • Facebook
  • Twitter
  • LinkedIn
  • Acasă
  • Linux
    • Comenzi Linux
    • Tutoriale
  • Kubernetes
  • RHCSA
    • Exerciții RHCSA
    • SELinux
    • Permisiuni
  • General
    • Open source
  • Contact

Cum se configurează autentificarea cu chei SSH pe un server Linux

22 aprilie 2017 By Bobses 3 comentarii

SSH, sau secure shell,  este un protocol criptat folosit pentru a ne conecta și a administra serverele Linux.

Cea mai obișnuită forma de conectare prin SSH la un server Linux este și cea mai folosită (dar nu este și cea mai sigură):

ssh nume_utilizator@IP_Sever_Linux

În acest articol voi prezenta o metodă de conectare mai sigură pe un server Linux; metoda folosește chei SSH. Cheile SSH furnizează o cale extrem de sigură de conectare la serverul propriu, fiind metoda pe care o recomand tuturor.

Cum funcționează cheile SSH?

O pereche de chei SSH sunt două chei criptate care permit conexiunea sigură a unui client pe un server Linux. Fiecare pereche de chei SSH constă dintr-o cheie privată și o cheie publică.

Cheia privată este păstrată pe mașina clientului. Orice dezvăluire a acestei chei poate provoca un atac asupra serverului respectiv. Ca măsură suplimentară de siguranță, cheia poate fi criptată cu o passphrase (frază secretă de acces).

Cheia publică se păstrează pe serverul pe care dorim să-l accesăm și poate fi dezvăluită tuturor: cine nu deține și cheia privată nu se poate conecta la server. Cheia publică criptează mesaje pe care doar cheia privată le poate decripta.

Cheia publică este urcată pe serverul remote pe care dorim să ne conectăm prin SSH. Cheia este stocată într-un fișier special în contul userului cu care ne vom conecta la server: ~/.ssh/authorized_keys.

Când cineva încearcă să se autentifice prin cheile SSH, serverul testează dacă cel care îl accesează se află în posesia cheii private. Dacă clientul dovedește că este proprietarul cheii private, o sesiune SSH securizată este deschisă și pot fi executate orice comenzi dorim pe server.

Schematic, ceea ce am povestit mai sus este ilustrat în imaginea de mai jos (clientul inițiază sesiunea SSH, serverul trimite un mesaj random care va fi criptat cu cheia privată, serverul decriptează mesajul primit de la client și dacă se potrivește cu cel trimis inițial se inițiază sesiunea SSH):

Cum se creează cheile SSH

Perechea de chei SSH va fi generată pe calculatorul local.

Într-un terminal vom scrie următoarea comandă:

ssh-keygen

Va trebui să stabilim locul unde va fi salvată cheia. Răspunsul va fi:

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

Dacă mai aveți alte alte chei în acest director, veți fi întrebați:

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

Fiți foarte atenți la situația suprascrierii (este un proces distructiv și nu veți mai putea recupera vechile chei): puteți pierde cheile vechi și nu vă veți mai putea conecta pe alte servere!

Mai departe, puteți sau nu să alegeți o frază de acces (pe care, normal, nu trebuie s-o uitați niciodată); fraza de acces este un strat suplimentar d eprotecție, dar care, la un moment dat, vă poate încurca, căci vi se va cere s-o introduceți la fiecare folosire a cheii:

Created directory '/home/username/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

În acest moment am cele două chei (publică și privată) în directorul .ssh:

$ ls
id_rsa id_rsa.pub

Copierea cheii publice pe serverul Linux

Poate fi făcută în două moduri:

Copiere manuală

Deschidem fișierul id_rsa.pub cu cat,  vim sau nano, copiem conținutul și îl vom scrie într-un fișier nou numit authorized_keys în directorul .ssh de pe server. Această metodă poate genera erori: dacă vom copia în plus sau în minus un singur caracter (de exemplu un spațiu), metoda de autentificare cu chei SSH nu va mai funcționa.

Copierea automată

Este metoda recomandată: vom folosi comanda ssh-copy-id în terminal pe sistemul local. Comanda este inclusă în pachetul OpenSSH și este de forma (se specifică numele de utilizator și hostul remote la care dorim să ne conectăm):

ssh-copy-id nume_utilizator@IP_Server_Linux

Pentru ca această metodă să funcționeze este necesar să aveți activă metoda de autentificare SSH cu parolă pe serverul dorit:

$ ssh-copy-id nume_utilizator@IP_server_Linux
/usr/sbin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/bobsesa/.ssh/id_rsa.pub"
/usr/sbin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/sbin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
nume-utilizator@IP_Server_Linux's password:

Number of key(s) added: 1

Now try logging into the machine, with: "ssh 'nume_utilizator@IP_server_Linux'"
and check to make sure that only the key(s) you wanted were added.

În acest moment pe serverul remote a fost instalată cheia SSH și se găsește în fișierul ~/.ssh/authorized_keys! Dacă totul a decurs cum trebuie, următoarea dată când veți iniția o sesiune SSH la serverul respectiv nu veți mai fi întrebați de parolă: autentificarea se va face pe bază de chei SSH!

O altă metodă de copiere automată a cheii SSH este folosirea comenzii de mai jos (citește cheia publică id_rsa.pub, se conectează prin SSH folosind parola pe serverul Linux, face directorul .ssh în home-ul utilizatorului respectiv și adaugă la conținutul existent în fișierul authorized_keys cheia publică care ne interesează):

cat ~/.ssh/id_rsa.pub | ssh nume_utilizator@IP_Server_Linux "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Dezactivarea autentificării cu parolă pe un server Linux

După ce ați instalat cu succes cheia SSH, poate doriți să dezactivați autentificarea cu parolă. Realizați acest lucru dacă vă conectați la server doar de pe mașina unde aveți cheia privată și nu o faceți și din altă parte!

Decshideți pe serverul Linux fișierul /etc/ssh/sshd_config:

sudo vim /etc/ssh/sshd_config

Vom căuta linia:

#PasswordAuthentication yes

O decomentăm și o modificăm astfel:

PasswordAuthentication no

Salvăm și închidem fișierul. Trebuie restartat serviciul ssh:

În Ubuntu (în funcție de versiune):

sudo service ssh restart

sau

sudo systemctl restart ssh

În CentOS (în funcție de versiune):

sudo service sshd restart

sau

sudo systemctl restart sshd

Ca sfat, dacă dezactivați autentificarea cu parolă, păstrați undeva (la loc sigur) cheia SSH privată.

Partajează asta:

  • Dă clic pentru a partaja pe Facebook(Se deschide într-o fereastră nouă)
  • Dă clic pentru a partaja pe LinkedIn(Se deschide într-o fereastră nouă)
  • Click to share on Twitter(Se deschide într-o fereastră nouă)

Similare

Din categoria: Tutoriale Etichete: linux, server virtual privat, SSH, VPS

Comentarii

  1. Malin a zis

    23 aprilie 2017 la ora 10:52

    In functie de OS si configuratie e posibil sa trebuiasca sa pui si "PermitRootLogin without-password" in sshd_config ca sa-ti mearga. Eu pe Debian si FreeBSD asa am.

    Răspunde
    • Bobses a zis

      23 aprilie 2017 la ora 11:07

      Da, sunt posibile modificări minore. Exemplul dat de mine e de pe un server cu Ubuntu 14.04.
      În CentOS 7, de exemplu, e vorba de fișierul /etc/ssh/ssh_config cu aceeași setare.

      Răspunde

Trackbacks

  1. Cluster Kubernetes multi-master în Oracle Cloud Free Tier | Despre Linux spune:
    12 iulie 2021 la 8:33

    […] important este să creăm local o cheie ssh pe care o vom folosi strict pentru conectarea la mașinile din Oracle Cloud. Vom selecta […]

    Răspunde

Lasă un răspunsAnulează răspunsul

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

Copyright © 2025 · Bobses

Administrează consimțămintele pentru cookie-uri
Pentru a oferi cea mai bună experiență, folosim tehnologii, cum ar fi cookie-uri, pentru a stoca și/sau accesa informațiile despre dispozitive. Consimțământul pentru aceste tehnologii ne permite să procesăm date, cum ar fi comportamentul de navigare sau ID-uri unice pe acest site. Dacă nu îți dai consimțământul sau îți retragi consimțământul dat poate avea afecte negative asupra unor anumite funcționalități și funcții.
Funcționale Mereu activ
Stocarea tehnică sau accesul sunt strict necesare în scopul legitim de a permite utilizarea unui anumit serviciu cerut în mod explicit de către un abonat sau un utilizator sau în scopul exclusiv de a executa transmiterea unei comunicări printr-o rețea de comunicații electronice.
Preferințe
Stocarea tehnică sau accesul este necesară în scop legitim pentru stocarea preferințelor care nu sunt cerute de abonat sau utilizator.
Statistici
Stocarea tehnică sau accesul care sunt utilizate exclusiv în scopuri statistice. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
Stocarea tehnică sau accesul sunt necesare pentru a crea profiluri de utilizator pentru a trimite publicitate sau pentru a urmări utilizatorul pe un site web sau pe mai multe site-uri web în scopuri de marketing similare.
Administrează opțiunile Administrează serviciile Administrează vânzătorii {vendor_count} Citește mai multe despre aceste scopuri
Vizualizează preferințele
{title} {title} {title}