ssh-keygen în Linux / Bash

Rețea și transfer date OpenSSH (Ed25519 din 6.5)

Generează perechi de chei SSH (privată și publică), le schimbă parola și le afișează amprenta.

Sintaxă comandă
ssh-keygen [-t TIP] [-C COMENTARIU] [-f FIȘIER] [-N PAROLĂ]

Ce face ssh-keygen

Autentificarea cu chei SSH înlocuiește parola: cheia privată rămâne pe calculatorul tău, iar cheia publică (fișierul .pub) se copiază pe server, în ~/.ssh/authorized_keys. ssh-keygen creează această pereche; tipul recomandat azi este ed25519, scurt și rapid.

Implicit cheile se salvează în ~/.ssh/id_ed25519 și ~/.ssh/id_ed25519.pub. Cheia privată primește permisiuni 600 (doar tu o poți citi). O parolă pe cheie (passphrase) o protejează dacă fișierul este furat; ssh-agent te scutește să o tastezi la fiecare conexiune.

Opțiuni și argumente

Opțiune / Parametru Descriere
-t ed25519 | rsa | ecdsa Tipul cheii. Pentru servere foarte vechi care nu știu Ed25519: -t rsa -b 4096.
-C COMENTARIU Text adăugat la finalul cheii publice, de obicei utilizator@calculator.
-f FIȘIER Calea fișierului cheii private (cheia publică primește sufixul .pub).
-N PAROLĂ Parola cheii, dată direct (șirul gol "" înseamnă fără parolă).
-p Schimbă parola unei chei existente.
-l -f FIȘIER Afișează amprenta (fingerprint) cheii.
-R GAZDA Șterge cheile vechi ale unei gazde din known_hosts.
-q Mod silențios, fără mesaje și fără desenul randomart.

Exemple

Exemplul 1: Generarea interactivă a unei chei

Apeși Enter pentru calea implicită și alegi o parolă pentru cheie. Amprenta și desenul diferă la fiecare cheie.

ssh-keygen -t ed25519 -C "ana@laptop-iasi"

Ieșire în terminal

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/ana/.ssh/id_ed25519):
Enter passphrase for "/home/ana/.ssh/id_ed25519" (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/ana/.ssh/id_ed25519
Your public key has been saved in /home/ana/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:Xq3v8m1kQe9TzR0bH2sL5yNw4cJp7aUfGdVi6oKjE1M ana@laptop-iasi
The key's randomart image is:
+--[ED25519 256]--+
|        .o+=*o.  |
|       . o.=+=.. |
|        o *.B.o  |
|       . = O.*   |
|        S *.=o.  |
|         o.=+o   |
|          o+E.   |
|         .o=+    |
|          .o..   |
+----[SHA256]-----+

Exemplul 2: Cheie generată dintr-un script

Cu -q și -N "" nu se pune nicio întrebare. Afișăm fișierele create, tipul și comentariul cheii publice și dimensiunea cheii (amprenta, unică, este omisă).

ssh-keygen -q -t ed25519 -N "" -C "ana@iasi" -f ./id_ed25519_iasi
ls id_ed25519_iasi*
cut -d' ' -f1,3 id_ed25519_iasi.pub
ssh-keygen -l -f id_ed25519_iasi.pub | awk '{print $1, $3, $4}'

Rezultat

id_ed25519_iasi
id_ed25519_iasi.pub
ssh-ed25519 ana@iasi
256 ana@iasi (ED25519)

Exemplul 3: Server reinstalat: ștergerea cheii vechi din known_hosts

După reinstalarea serverului, SSH refuză conexiunea pentru că amprenta gazdei s-a schimbat. Ștergi intrarea veche doar dacă știi sigur de ce s-a schimbat.

ssh-keygen -R 203.0.113.10

Ieșire în terminal

# Host 203.0.113.10 found: line 12
/home/ana/.ssh/known_hosts updated.
Original contents retained as /home/ana/.ssh/known_hosts.old

Greșeli frecvente

  • Copierea cheii private (fără .pub) pe server sau trimiterea ei pe chat; doar cheia publică pleacă de pe calculatorul tău.
  • Permisiuni prea largi pe ~/.ssh sau pe cheia privată: SSH refuză cheia cu mesajul UNPROTECTED PRIVATE KEY FILE!. Repară cu chmod 700 ~/.ssh și chmod 600 ~/.ssh/id_ed25519.

Comenzi înrudite

  • ssh-copy-id: Copiază cheia ta publică SSH pe un server, în authorized_keys, ca să te poți conecta fără parolă.
  • ~/.ssh/config: Fișierul de configurare al clientului SSH: nume scurte pentru servere, utilizator, port și cheie implicite.
  • ssh: Conectează în siguranță un terminal criptat la distanță pe un alt server Linux.
  • chmod: Schimbă drepturile de acces (citire, scriere, execuție) pentru utilizator, grup și ceilalți.