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
~/.sshsau pe cheia privată: SSH refuză cheia cu mesajulUNPROTECTED PRIVATE KEY FILE!. Repară cuchmod 700 ~/.sshșichmod 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.