SSH-KEYGEN(1)

NUME
ssh-keygen - instrument pentru cheile de autentificare OpenSSH

SINOPSIS
ssh-keygen [-q] [-a runde] [-b bits] [-C comentariu] [-f fișier-cheie_de_ieșire] [-m format] [-N frază-de-acces_nouă] [-O opțiune] [-t ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa] [-w furnizor] [-Z cifrarea] ssh-keygen -p [-a runde] [-f fișier-cheie] [-m format] [-N frază-de-acces_nouă] [-P frază-de-acces_veche] [-Z cifrarea] ssh-keygen -i [-f fișier-cheie_de_intrare] [-m format-cheie] ssh-keygen -e [-f fișier-cheie_de_intrare] [-m format-cheie] ssh-keygen -y [-f fișier-cheie_de_intrare] ssh-keygen -c [-a runde] [-C comentariu] [-f fișier-cheie] [-P frază-acces] ssh-keygen -l [-v] [-E hash-fingerprint] [-f fișier-cheie_de_intrare] ssh-keygen -B [-f fișier-cheie_de_intrare] ssh-keygen -D pkcs11 ssh-keygen -F nume-gazdă [-lv] [-f fișier-gazde-cunoscute] ssh-keygen -H [-f fișier-gazde-cunoscute] ssh-keygen -K [-a runde] [-w furnizor] ssh-keygen -R nume-gazdă [-f fișier-gazde-cunoscute] ssh-keygen -r nume-gazdă [-g] [-f fișier-cheie_de_intrare] ssh-keygen -M generate [-O opțiune] fișier_ieșire ssh-keygen -M screen [-f fișier_intrare] [-O opțiune] fișier_ieșire ssh-keygen -I identitate_certificat -s ca_key [-hU] [-D pkcs11_provider] [-n principali] [-O opțiune] [-V interval-valabilitate] [-z număr-serie] file ... ssh-keygen -L [-f fișier-cheie_de_intrare] ssh-keygen -A [-a runde] [-f prefix-rută] ssh-keygen -k -f fișier-krl [-u] [-s public-CA] [-z număr-versiune] file ... ssh-keygen -Q [-l] -f fișier-krl file ... ssh-keygen -Y find-principals [-O opțiune] -s fișier-semnătură -f fișier-semnatari-autorizați ssh-keygen -Y match-principals -I identitate-semnatar -f fișier-semnatari-autorizați ssh-keygen -Y check-novalidate [-O opțiune] -n spațiu-nume -s fișier-semnătură ssh-keygen -Y sign [-O opțiune] -f fișier-cheie -n spațiu-nume file ... ssh-keygen -Y verify [-O opțiune] -f fișier-semnatari-autorizați -I identitate-semnatar -n spațiu-nume -s fișier-semnătură [-r fișier-revocare]

DESCRIERE
ssh-keygen generează, gestionează și convertește cheile de autentificare pentru ssh(1). ssh-keygen poate crea chei pentru a fi utilizate de protocolul SSH versiunea 2.

Tipul de cheie care urmează să fie generat este specificat cu ajutorul opțiunii -t. În cazul în care este invocat fără niciun argument, ssh-keygen va genera o cheie Ed25519.

ssh-keygen este, de asemenea, utilizat pentru a genera grupuri pentru utilizarea în schimbul de grupuri Diffie-Hellman (DH-GEX). A se vedea secțiunea GENERAREA DE MODULI pentru detalii.

În sfârșit, ssh-keygen poate fi utilizat pentru a genera și actualiza listele de revocare a cheilor și pentru a testa dacă anumite chei au fost revocate de una dintre acestea. Pentru detalii, consultați secțiunea LISTE DE REVOCARE A CHEILOR.

În mod normal, fiecare utilizator care dorește să utilizeze SSH cu autentificare cu cheie publică execută această operație o singură dată pentru a crea cheia de autentificare în ~/.ssh/id_ecdsa, ~/.ssh/id_ecdsa_sk, ~/.ssh/id_ed25519, ~/.ssh/id_ed25519_sk sau ~/.ssh/id_rsa. În plus, administratorul de sistem poate folosi acest lucru pentru a genera chei de gazdă, așa cum se vede în /etc/rc.

În mod normal, acest program generează cheia și solicită un fișier în care să fie stocată cheia privată. Cheia publică este stocată într-un fișier cu același nume, dar cu mențiunea “.pub”. Programul solicită, de asemenea, o frază de acces. Fraza de acces poate fi goală pentru a indica faptul că nu există o frază de acces (cheile gazdă trebuie să aibă o frază de acces goală) sau poate fi un șir de lungime arbitrară. O frază de acces este similară cu o parolă, cu excepția faptului că poate fi o frază cu o serie de cuvinte, semne de punctuație, numere, spații albe sau orice șir de caractere pe care îl doriți. Frazele de acces bune au o lungime de 10-30 de caractere, nu sunt propoziții simple sau ușor de ghicit (proza în limba engleză are doar 1-2 biți de entropie per caracter și oferă fraze de acces foarte proaste) și conțin un amestec de litere majuscule și minuscule, numere și caractere non-alfanumerice. Fraza de acces poate fi modificată ulterior prin utilizarea opțiunii -p.

Nu există nicio modalitate de a recupera o frază de acces pierdută. În cazul în care fraza de acces este pierdută sau uitată, trebuie generată o nouă cheie și cheia publică corespunzătoare trebuie copiată pe alte mașini.

ssh-keygen va scrie în mod implicit cheile într-un format specific OpenSSH. Acest format este preferat deoarece oferă o protecție mai bună pentru cheile în repaus și permite stocarea comentariilor privind cheile în fișierul de chei private. Comentariul cheii poate fi util pentru a ajuta la identificarea cheii. Comentariul este inițializat la “utilizator@gazdă” atunci când cheia este creată, dar poate fi modificat cu ajutorul opțiunii -c.

Este în continuare posibil ca ssh-keygen să scrie cheile private în formatul PEM utilizat anterior, utilizând opțiunea -m. Aceasta poate fi utilizată la generarea de chei noi, iar cheile existente în format nou pot fi convertite utilizând această opțiune împreună cu opțiunea -p (schimbare frază de acces).

După ce o cheie este generată, ssh-keygen va întreba unde trebuie plasate cheile pentru a fi activate.

Opțiunile sunt următoarele:

-A  Generează chei de gazdă pentru toate tipurile de chei implicite (rsa, ecdsa și ed25519), dacă nu există deja. Cheile de gazdă sunt generate cu ruta implicită a fișierului de chei, o frază de acces goală, biți impliciți pentru tipul de cheie și un comentariu implicit. Dacă a fost specificată și -f, argumentul său este utilizat ca prefix pentru ruta implicită pentru fișierele de chei de gazdă rezultate. Aceasta este utilizată de /etc/rc pentru a genera noi chei gazdă.

-a runde
    La salvarea unei chei private, această opțiune specifică numărul de runde KDF (funcția de derivare a cheilor, în prezent bcrypt_pbkdf(3)) utilizate. Un număr mai mare duce la o verificare mai lentă a frazei de acces și la o rezistență mai mare la spargerea prin forță brută a parolei (în cazul în care cheile sunt furate). Valoarea implicită este de 16 runde.

-B  Afișează suma de control în formatul „bubblebabble” a fișierului de chei private sau publice specificat.

-b biți
    Specifică numărul de biți din cheia care urmează să fie creată. Pentru cheile RSA, dimensiunea minimă este de 1024 de biți, iar cea implicită este de 3072 de biți. În general, 3072 de biți este considerată suficientă. Pentru cheile ECDSA, opțiunea -b determină lungimea cheii prin selectarea uneia dintre cele trei dimensiuni ale curbei eliptice: 256, 384 sau 521 de biți. Încercarea de a utiliza alte lungimi de biți decât aceste trei valori pentru cheile ECDSA va eșua. Cheile ECDSA-SK, Ed25519 și Ed25519-SK au o lungime fixă, iar opțiunea -b va fi ignorată.

-C comentariu
    Furnizează un comentariu nou.

-c  Solicită modificarea comentariului din fișierele de chei private și publice. Programul va solicita fișierul care conține cheile private, fraza de acces, dacă cheia are una, și noul comentariu.

-D pkcs11
    Descarcă cheile publice furnizate de biblioteca partajată PKCS#11 pkcs11. Atunci când este utilizată în combinație cu -s, această opțiune indică faptul că o cheie a autorității de certificare (CA) se află într-un jeton PKCS#11 (a se vedea secțiunea CERTIFICATE pentru detalii).

-E hash-fingerprint
    Specifică algoritmul sumei de control utilizat la afișarea amprentelor cheilor. Opțiunile valide sunt: “md5” și “sha256”. Opțiunea implicită este “sha256”.

-e  Această opțiune va citi un fișier de chei private sau publice OpenSSH și va afișa la ieșirea standard o cheie publică într-unul dintre formatele specificate de opțiunea -m. Formatul de export implicit este “RFC4716”. Această opțiune permite exportarea cheilor OpenSSH pentru a fi utilizate de alte programe, inclusiv de mai multe implementări SSH comerciale.

-F nume-gazdă | [nume-gazdă]:port
    Caută nume-gazdă specificat (cu numărul opțional al portului) într-un fișier known_hosts, enumerând toate aparițiile găsite. Această opțiune este utilă pentru a găsi nume de gazde sau adrese transformate în sume de control și poate fi utilizată, de asemenea, împreună cu opțiunea -H pentru a imprima cheile găsite într-un format de sumă de control.

-f nume-fișier
    Specifică numele de fișier al fișierului de chei.

-g  Utilizează formatul generic DNS la imprimarea înregistrărilor de resurse de „amprentă digitală” (fingerprint) cu ajutorul comenzii -r.

-H  Transformă conținutul unui fișier known_hosts în sume de control. Aceasta înlocuiește toate numele de gazdă și adresele cu reprezentări sub formă de sumă de control în fișierul specificat; conținutul original este mutat într-un fișier cu sufixul .old. Aceste sume de control pot fi utilizate în mod normal de către ssh și sshd, dar nu dezvăluie informații de identificare în cazul în care conținutul fișierului ar fi dezvăluit. Această opțiune nu va modifica numele de gazdă hașurate existente și, prin urmare, este sigură pentru a fi utilizată în fișiere care amestecă nume convertite în sume de control și nume neconvertite în sume de control.

-h  Atunci când semnați o cheie, creați un certificat de gazdă în loc de un certificat de utilizator. Consultați secțiunea CERTIFICATE pentru detalii.

-I identitate_certificat
    Specifică identitatea cheii atunci când se semnează o cheie publică. Consultați secțiunea CERTIFICATE pentru detalii.

-i  Această opțiune va citi un fișier de chei private (sau publice) necriptate în formatul specificat de opțiunea -m și va imprima o cheie privată (sau publică) compatibilă cu OpenSSH la ieșirea standard (stdout). Această opțiune permite importarea cheilor din alte programe, inclusiv din mai multe implementări SSH comerciale. Formatul de import implicit este “RFC4716”.

-K  Descarcă cheile rezidente de la un autentificator FIDO. Fișierele de chei publice și private vor fi scrise în directorul curent pentru fiecare cheie descărcată. În cazul în care sunt atașați mai mulți autentificatori FIDO, cheile vor fi descărcate de la primul autentificator accesat. Consultați secțiunea AUTENTIFICATOR FIDO pentru mai multe informații.

-k  Generează un fișier KRL. În acest mod, ssh-keygen va genera un fișier KRL la locația specificată prin intermediul opțiunii -f care revocă fiecare cheie sau certificat prezentat în linia de comandă. Cheile/certificatele care urmează să fie revocate pot fi specificate prin fișierul de chei publice sau utilizând formatul descris în secțiunea LISTE DE REVOCARE A CHEILOR.

-L  Afișează conținutul unuia sau mai multor certificate.

-l  Afișează amprenta digitală a fișierului de chei publice specificat. ssh-keygen va încerca să găsească fișierul cu cheia publică corespunzătoare și îi va imprima amprenta. Dacă este combinată cu opțiunea -v, împreună cu amprenta digitală se furnizează o reprezentare vizuală ASCII a cheii.

-M generate
    Generează parametri candidați pentru schimbul de grup Diffie-Hellman (DH-GEX) pentru o eventuală utilizare de către metodele de schimb de chei ‘diffie-hellman-group-exchange-*’. Numerele generate de această operație trebuie să fie verificate în continuare înainte de utilizare. Pentru mai multe informații, consultați secțiunea GENERAREA DE MODULI.

-M screen
    Verifică parametrii candidați pentru schimbul de grupuri Diffie-Hellman. Aceasta va accepta o listă de numere candidate și va testa dacă acestea sunt numere prime sigure (Sophie Germain) cu generatori de grup acceptabili. Rezultatele acestei operații pot fi adăugate la fișierul /etc/ssh/moduli. Pentru mai multe informații, consultați secțiunea GENERAREA DE MODULI.

-m format-cheie
    Specifică un format de cheie pentru generarea cheii, opțiunile de conversie -i (import), -e (export) și operația -p de modificare a frazei de acces. Aceasta din urmă poate fi utilizată pentru a converti între formatele de chei private OpenSSH și de chei private PEM. Formatele de chei acceptate sunt: “RFC4716” (cheie publică sau privată RFC 4716/SSH2), “PKCS8” (cheie publică sau privată PKCS8) sau “PEM” (cheie publică PEM). În mod implicit, OpenSSH va scrie cheile private nou-generate în propriul format, dar atunci când convertește cheile publice pentru export, formatul implicit este “RFC4716”. Definirea unui format “PEM” atunci când se generează sau se actualizează un tip de cheie privată acceptat va face ca cheia să fie stocată în formatul tradițional al cheilor private PEM.

-N frază-de-acces_nouă
    Furnizează noua frază de acces.

-n principale
    Specifică unul sau mai mulți principali (nume de utilizatori sau de gazde) care urmează să fie incluși într-un certificat la semnarea unei chei. Se pot specifica mai mulți principali, separați prin virgule. Pentru detalii, consultați secțiunea CERTIFICATE.

-O opțiune
    Specifică o opțiune cheie/valoare. Acestea sunt specifice operației pe care ssh-keygen a fost solicitat să o efectueze.

    La semnarea certificatelor, se poate specifica aici una dintre opțiunile enumerate în secțiunea CERTIFICATE.

    Atunci când se efectuează generarea sau verificarea de moduli, se poate specifica una dintre opțiunile enumerate în secțiunea GENERAREA DE MODULI.

    La generarea cheilor bazate pe autentificatorul FIDO, pot fi specificate opțiunile enumerate în secțiunea AUTENTIFICATOR FIDO.

    Atunci când se execută opțiuni legate de semnătură cu ajutorul fanionului -Y, sunt acceptate următoarele opțiuni:

    hashalg=algoritm
        Selectează algoritmul de sumă de control care urmează să fie utilizat pentru calcularea sumei de control a mesajului care urmează să fie semnat. Algoritmii valabili sunt “sha256” și “sha512.” Valoarea implicită este “sha512.”.

    print-pubkey
        Afișează cheia publică completă la ieșirea standard după verificarea semnăturii.

    verify-time=marcaj-timp
        Specifică timpul care să fie utilizat la validarea semnăturilor în locul timpului curent. Timpul poate fi specificat ca dată sau oră în format AAAALLZZ[Z] sau AAAALLZZHHMM[SS][Z]. Datele și orele vor fi interpretate în fusul orar curent al sistemului, cu excepția cazului în care sunt sufixate cu un caracter Z, ceea ce face ca acestea să fie interpretate în fusul orar UTC.

    Atunci când se generează înregistrări DNS SSHFP din chei publice utilizând fanionul -r, sunt acceptate următoarele opțiuni:

    hashalg=algoritm
        Selectează un algoritm de sumă de control (hash) care să fie utilizat la imprimarea înregistrărilor SSHFP utilizând opțiunea -D. Algoritmii valabili sunt “sha1” și “sha256”. Valoarea implicită este de a le imprima pe ambele.

    Opțiunea -O poate fi specificată de mai multe ori.

-P frază-de-acces
    Furnizează fraza de acces (veche).

-p  Solicită modificarea frazei de acces a unui fișier de chei private în loc de crearea unei noi chei private. Programul va solicita fișierul care conține cheia privată, vechea frază de acces și de două ori noua frază de acces.

-Q  Testează dacă cheile au fost revocate într-un fișier KRL. Dacă este specificată și opțiunea -l, se va afișa conținutul KRL.

-q  Face ca ssh-keygen să opereze silențios.

-R nume-gazdă | [nume-gazdă]:port
    Elimină toate cheile aparținând nume-gazdă specificat (cu numărul opțional al portului) dintr-un fișier known_hosts. Această opțiune este utilă pentru a șterge gazdele cu numele convertit în sumă de control (a se vedea opțiunea -H de mai sus).

-r nume-gazdă
    Afișează înregistrarea resurselor de amprentă SSHFP numită nume-gazdă pentru fișierul de chei publice specificat.

-s cheie_CA
    Certifică (semnează) o cheie publică utilizând cheia CA specificată. Pentru detalii, consultați secțiunea CERTIFICATE.

    Atunci când se generează un fișier KRL, -s specifică o rută către un fișier de chei publice de CA utilizat pentru a revoca certificatele direct după ID-ul cheii sau numărul de serie. Pentru detalii, consultați secțiunea LISTE DE REVOCARE A CHEILOR.

-t ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa
    Specifică tipul de cheie care trebuie creat. Valorile posibile sunt “ecdsa”, “ecdsa-sk”, “ed25519 (tipul de cheie implicit)”, “ed25519-sk” sau “rsa”.

    Această opțiune poate fi utilizată, de asemenea, pentru a specifica tipul de semnătură dorit atunci când se semnează certificate care utilizează o cheie RSA CA. Variantele de semnătură RSA disponibile sunt “ssh-rsa” (semnături SHA1, nerecomandate), “rsa-sha2-256” și “rsa-sha2-512” (varianta implicită pentru cheile RSA).

-U  Atunci când este utilizată în combinație cu -s sau -Y sign, această opțiune indică faptul că o cheie CA se află într-un ssh-agent(1). Pentru mai multe informații, consultați secțiunea CERTIFICATE.

-u  Actualizează un fișier KRL. Atunci când este specificat cu -k, cheile enumerate prin linia de comandă sunt adăugate la KRL-ul existent, în loc să fie creat un nou KRL.

-V interval_valabilitate
    Specifică un interval de valabilitate la semnarea unui certificat. Un interval de valabilitate poate consta dintr-un singur moment, indicând că certificatul este valabil începând din acest moment și expirând în acel moment, sau poate consta din două momente separate de două puncte pentru a indica un interval de timp explicit.

    Momentul de începere poate fi specificat astfel:
    •   Șirul “always” pentru a indica faptul că certificatul nu are o oră de începere specificată.
    •   O dată sau o oră în fusul orar al sistemului, formatată ca AAAALLZZ sau AAAALLZZHHMM[SS].
    •   O dată sau o oră în fusul orar UTC sub forma AAAALLZZZ sau AAAALLZZHHMM[SS]Z.
    •   O oră relativă înaintea orei curente a sistemului, formată dintr-un semn minus urmat de un interval în formatul descris în secțiunea FORMATE DE TIMP din sshd_config(5).
    •   Un număr brut de secunde de la începutul epocii (1 ianuarie 1970 00:00:00:00 UTC) sub forma unui număr hexazecimal care începe cu “0x”.

    Momentul de sfârșit poate fi specificat în mod similar cu momentul de început:
    •   Șirul de caractere “forever” pentru a indica faptul că certificatul nu are un termen de expirare specificat.
    •   O dată sau o oră în fusul orar al sistemului, formatată ca AAAALLZZ sau AAAALLZZHHMM[SS].
    •   O dată sau o oră în fusul orar UTC sub forma AAAALLZZZ sau AAAALLZZHHMM[SS]Z.
    •   O oră relativă după ora curentă a sistemului, formată dintr-un semn plus urmat de un interval în formatul descris în secțiunea FORMATE DE TIMP din sshd_config(5).
    •   Un număr brut de secunde de la începutul epocii (1 ianuarie 1970 00:00:00:00 UTC) sub forma unui număr hexazecimal care începe cu “0x”.

    De exemplu:

    +52w1d
        Valabil de acum până la 52 de săptămâni și o zi de acum încolo.

    -4w:+4w
        Valabil de acum patru săptămâni până la patru săptămâni de acum încolo.

    20230101123000:20240101123000
        Valabil de la ora 12:30 PM, 1 ianuarie 2023 până la ora 12:30 PM, 1 ianuarie 2024.

    20230101123000Z:20240101123000Z
        Similar, dar interpretat în fusul orar UTC și nu în fusul orar al sistemului.

    -1d:20250101
        Valabil de ieri până la miezul nopții, 1 ianuarie 2025.

    0x1:0x2000000000
        Valabil aproximativ de la începutul anului 1970 până în mai 2033.

    -1m:forever
        Valabil începând cu un minut în urmă și nu expiră niciodată.

-v  Modul descriptiv. Face ca ssh-keygen să afișeze mesaje de depanare despre progresul său. Acest lucru este util pentru depanarea generării de module. Opțiunile multiple ale -v sporesc gradul de detalii. Valoarea maximă este 3.

-w furnizor
    Specifică o rută către o bibliotecă care va fi utilizată la crearea cheilor găzduite de autentificatorul FIDO, înlocuind opțiunea implicită de utilizare a suportului USB HID intern.

-Y find-principals
    Găsește principalii asociați cu cheia publică a unei semnături, furnizată cu ajutorul fanionului -s într-un fișier de semnatari autorizați furnizat cu ajutorul fanionului -f. Formatul fișierului de semnatari autorizați este documentat în secțiunea SEMNATARI AUTORIZAȚI de mai jos. În cazul în care se găsesc unul sau mai mulți împuterniciți care corespund, aceștia sunt returnați la ieșirea standard.

-Y match-principals
    Găsește principalul care se potrivește cu numele principalului furnizat cu ajutorul fanionului -I în fișierul semnatarilor autorizați specificat cu ajutorul fanionului -f. În cazul în care se găsesc unul sau mai mulți principali care corespund, aceștia sunt returnați la ieșirea standard.

-Y check-novalidate
    Verifică dacă o semnătură generată folosind ssh-keygen -Y sign are o structură validă. Aceasta nu validează dacă o semnătură provine de la un semnatar autorizat. Atunci când testează o semnătură, ssh-keygen acceptă un mesaj la intrarea standard și un spațiu de nume de semnătură folosind -n. Un fișier care conține semnătura corespunzătoare trebuie, de asemenea, să fie furnizat folosind fanionul -s. Testarea cu succes a semnăturii este semnalată de ssh-keygen prin returnarea unei stări de ieșire zero.

-Y sign
    Semnează criptografic un fișier sau anumite date utilizând o cheie SSH. Atunci când semnează, ssh-keygen acceptă zero sau mai multe fișiere de semnat în linia de comandă - dacă nu este specificat niciun fișier, ssh-keygen va semna datele prezentate la intrarea standard. Semnăturile sunt scrise în ruta fișierului de intrare cu “.sig” atașat, sau la ieșirea standard în cazul în care mesajul care urmează să fie semnat a fost citit de la intrarea standard.

    Cheia utilizată pentru semnare este specificată cu ajutorul opțiunii -f și se poate referi fie la o cheie privată, fie la o cheie publică cu jumătatea privată disponibilă prin ssh-agent(1). Un spațiu de nume de semnătură suplimentar, utilizat pentru a preveni confuzia de semnături în diferite domenii de utilizare (de exemplu, semnarea fișierelor vs. semnarea mesajelor de poștă electronică) trebuie furnizat prin intermediul fanionului -n. Spațiile de nume sunt șiruri de caractere arbitrare și pot include: “file” pentru semnarea fișierelor, “email” pentru semnarea mesajelor electronice. Pentru utilizări personalizate, se recomandă utilizarea de nume care să urmeze un model SPAȚIU_DE_NUME@DOMENIUL.DVS pentru a genera spații de nume lipsite de ambiguitate.

-Y verify
    Solicită verificarea unei semnături generate folosind ssh-keygen -Y sign, așa cum a fost descris mai sus. Atunci când verifică o semnătură, ssh-keygen acceptă un mesaj la intrarea standard și un spațiu de nume al semnăturii folosind -n. De asemenea, trebuie să se furnizeze un fișier care conține semnătura corespunzătoare cu ajutorul fanionului -s, împreună cu identitatea semnatarului cu ajutorul -I și o listă de semnatari autorizați cu ajutorul fanionului -f. Formatul fișierului semnatarilor autorizați este documentat în secțiunea SEMNATARI AUTORIZAȚI de mai jos. Un fișier care conține chei revocate poate fi transmis cu ajutorul fanionului -r. Fișierul de revocare poate fi un KRL sau o listă de chei publice, una pe linie. Verificarea reușită de către un semnatar autorizat este semnalată prin faptul că ssh-keygen returnează o stare de ieșire zero.

-y  Această opțiune va citi un fișier privat în format OpenSSH și va imprima o cheie publică OpenSSH la ieșirea standard.

-Z cifrarea
    Specifică cifrarea care trebuie utilizată pentru criptare atunci când se scrie un fișier de cheie privată în format OpenSSH. Lista cifrărilor disponibile poate fi obținută utilizând "ssh -Q cipher". Valoarea implicită este “aes256-ctr”.

-z număr-serie
    Specifică un număr de serie care trebuie încorporat în certificat pentru a distinge acest certificat de altele de la aceeași autoritate de certificare (CA). Dacă număr-serie este prefixat cu un caracter ‘+’, atunci numărul de serie va fi incrementat pentru fiecare certificat semnat pe o singură linie de comandă. Numărul de serie implicit este zero.

    Atunci când se generează un KRL, fanionul -z este utilizat pentru a specifica un număr de versiune KRL.

GENERARE DE MODULI
ssh-keygen poate fi utilizat pentru a genera grupuri pentru protocolul Diffie-Hellman Group Exchange (DH-GEX). Generarea acestor grupuri este un proces în două etape: mai întâi, se generează numere prime candidate folosind un proces rapid, dar care necesită multă memorie. Aceste prime candidate sunt apoi testate pentru a se verifica dacă sunt adecvate (un proces care necesită un consum intensiv de CPU).

Generarea numerelor prime se realizează cu ajutorul opțiunii -M generate. Lungimea dorită a numerelor prime poate fi specificată cu ajutorul opțiunii -O bits. De exemplu:

    # ssh-keygen -M generate -O bits=2048 moduli-2048.candidates

În mod implicit, căutarea numerelor prime începe într-un punct aleatoriu din intervalul de lungime dorit. Acest lucru poate fi anulat cu ajutorul opțiunii -O start, care specifică un alt punct de pornire (în hexazecimal).

După ce a fost generat un set de candidați, aceștia trebuie să fie examinați pentru a se stabili dacă sunt potriviți. Acest lucru poate fi realizat cu ajutorul opțiunii -M screen. În acest mod, ssh-keygen va citi candidații de la intrarea standard (sau dintr-un fișier specificat cu ajutorul opțiunii -f). De exemplu:

    # ssh-keygen -M screen -f moduli-2048.candidates moduli-2048

În mod implicit, fiecare candidat va fi supus la 100 de teste de primalitate. Acest lucru poate fi anulat cu ajutorul opțiunii -O prime-tests. Valoarea generatorului DH va fi aleasă în mod automat pentru prima considerată. În cazul în care se dorește un generator specific, acesta poate fi solicitat utilizând opțiunea -O generator. Valorile valide ale generatorului sunt 2, 3 și 5.

Grupurile DH verificate pot fi instalate în /etc/ssh/moduli. Este important ca acest fișier să conțină moduli cu o serie de lungimi de biți.

Sunt disponibile o serie de opțiuni pentru generarea și verificarea de moduli prin intermediul fanionului -O:

lines=număr
    Iese după examinarea numărului specificat de linii în timp ce se efectuează examinarea candidaților DH.

start-line=număr-linie
    Începe examinarea la numărul de linie specificat în timp ce se efectuează examinarea candidaților DH.

checkpoint=nume-fișier
    Scrie ultima linie procesată în fișierul specificat în timpul efectuării verificării candidaților DH. Acest lucru va fi utilizat pentru a sări peste liniile din fișierul de intrare care au fost deja procesate, în cazul în care activitatea este repornită.

start=valoare-hex
    Specifică punctul de pornire (în hexazecimal) la generarea de moduli candidați pentru DH-GEX.

generator=valoare
    Specifică generatorul dorit (în zecimal) atunci când se efectuează testarea de moduli candidați pentru DH-GEX.

CERTIFICATE
ssh-keygen acceptă semnarea cheilor pentru a produce certificate care pot fi utilizate pentru autentificarea utilizatorului sau a gazdei. Certificatele constau dintr-o cheie publică, unele informații privind identitatea, zero sau mai multe nume principale (utilizator sau gazdă) și un set de opțiuni care sunt semnate de o cheie a autorității de certificare (CA). Clienții sau serverele pot avea încredere doar în cheia CA și pot verifica semnătura acesteia pe un certificat, în loc să aibă încredere în mai multe chei de utilizator/gazdă. Rețineți că certificatele OpenSSH au un format diferit și mult mai simplu decât certificatele X.509 utilizate în ssl(8).

ssh-keygen acceptă două tipuri de certificate: utilizator și gazdă. Certificatele de utilizator autentifică utilizatorii față de servere, în timp ce certificatele de gazdă autentifică gazdele serverului față de utilizatori. Pentru a genera un certificat de utilizator:

    $ ssh-keygen -s /ruta/la/cheie_CA -I id -n utilizator \
          /ruta/la/cheie_utilizator.pub

Certificatul rezultat va fi salvat în /ruta/la/cheie_utilizator-certificat.pub. Argumentul pentru -I este un identificator de cheie care va fi utilizat în jurnale și poate fi folosit pentru revocarea cheilor. Argumentul pentru -n este format din unul sau mai mulți principali (separate prin virgulă), de obicei nume de utilizator, pe care le reprezintă certificatul. Un certificat de gazdă necesită opțiunea -h:

    $ ssh-keygen -s /ruta/la/cheie_CA -I id -h -n foo.example.org \
         ruta/la/cheie_gazdă.pub

Pentru certificatele de gazdă, entitățile specificate folosind argumentul -n sunt nume de gazdă și pot conține caractere joker.

Certificatul de gazdă va fi generat în /ruta/la/certificat-cheie_gazdă.pub.

Este posibil să se semneze folosind o cheie CA stocată într-un jeton PKCS#11, furnizând biblioteca de jetoane prin utilizarea -D și identificând cheia CA prin furnizarea jumătății publice a acesteia ca argument pentru -s:

    $ ssh-keygen -s cheie_CA.pub -D libpkcs11.so -I id -n utilizator \
          cheie_utilizator.pub

În mod similar, este posibil ca cheia CA să fie găzduită într-un ssh-agent(1). Acest lucru este indicat prin fanionul -U și, din nou, cheia CA trebuie să fie identificată prin jumătatea sa publică.

    $ ssh-keygen -Us ca_key.pub -I id -n utilizator cheie_utilizator.pub

În toate cazurile, id_cheie este un „identificator de cheie” care este înregistrat de server atunci când certificatul este utilizat pentru autentificare.

Certificatele sunt limitate pentru a fi valabile pentru un set de nume principale (utilizator/gazdă).. Pentru a genera un certificat pentru un set specificat de principali:

    $ ssh-keygen -s cheie_CA -I id -n utilizator1,utilizator2 cheie_utilizator.pub
    $ ssh-keygen -s cheie_CA -I id -h -n gazdă.domeniu cheie_gazdă.pub

Limitările suplimentare privind valabilitatea și utilizarea certificatelor de utilizator pot fi specificate prin intermediul opțiunilor de certificat. O opțiune de certificat poate dezactiva caracteristici ale sesiunii SSH, poate fi valabilă numai atunci când este prezentată de la anumite adrese sursă sau poate forța utilizarea unei comenzi specifice.

Opțiunile care sunt valabile pentru certificatele de utilizator sunt:

clear
    Anulează toate permisiunile activate. Acest lucru este util pentru a șterge setul implicit de permisiuni, astfel încât permisiunile să poată fi adăugate individual.

critical:nume[=conținut]
extension:nume[=conținut]
    Include o opțiune sau o extensie critică de certificat arbitrară. numele specificat trebuie să includă un sufix de domeniu, de exemplu: “nume@example.com”. Dacă este specificat conținut, atunci este inclus conținutul extensiei/opțiunii codificat ca un șir de caractere, în caz contrar extensia/opțiunea este creată fără conținut (indicând de obicei un fanion). Extensiile pot fi ignorate de un client sau server care nu le recunoaște, în timp ce opțiunile critice necunoscute vor determina refuzul certificatului.

force-command=comanda
    Forțează executarea comenzii comanda în loc de orice shell sau comandă specificată de utilizator atunci când certificatul este utilizat pentru autentificare.

no-agent-forwarding
    Dezactivează redirecționarea ssh-agent(1) (permisă în mod implicit).

no-port-forwarding
    Dezactivați redirecționarea porturilor (permisă în mod implicit).

no-pty
    Dezactivează alocarea PTY (permisă în mod implicit).

no-user-rc
    Dezactivează executarea ~/.ssh/rc de către sshd(8) (permisă în mod implicit).

no-x11-forwarding
    Dezactivează redirecționarea X11 (permisă în mod implicit).

permit-agent-forwarding
    Permite redirecționarea ssh-agent(1).

permit-port-forwarding
    Permite redirecționarea porturilor.

permit-pty
    Permite alocarea PTY.

permit-user-rc
    Permite executarea ~/.ssh/rc de către sshd(8).

permit-X11-forwarding
    Permite redirecționarea X11.

no-touch-required
    Nu solicită ca semnăturile realizate cu această cheie să includă demonstrarea prezenței utilizatorului (de exemplu, prin atingerea autentificatorului de către utilizator). Această opțiune are sens numai pentru algoritmii de autentificare FIDO ecdsa-sk și ed25519-sk.

source-address=listă-adrese
    Restricționează adresele sursă de la care certificatul este considerat valabil. listă-adrese este o listă de una sau mai multe perechi adresă/mască de rețea în format CIDR, separate prin virgule.

verify-required
    Semnăturile obligatorii realizate cu ajutorul acestei chei indică faptul că utilizatorul a fost verificat mai întâi, de exemplu, prin PIN sau biometrie pe jeton. Această opțiune are sens numai pentru algoritmii de autentificare FIDO ecdsa-sk și ed25519-sk.

În prezent, nicio opțiune standard nu este valabilă pentru cheile gazdă.

În cele din urmă, certificatele pot fi definite cu o durată de valabilitate. Opțiunea -V permite specificarea orelor de început și de sfârșit ale certificatului. Un certificat care este prezentat la o oră în afara acestui interval nu va fi considerat valabil. În mod implicit, certificatele sunt valabile de la Epoca UNIX până în viitorul îndepărtat.

Pentru ca certificatele să fie utilizate pentru autentificarea utilizatorului sau a gazdei, cheia publică a autorității de certificare (CA) trebuie să fie de încredere pentru sshd(8) sau ssh(1). Consultați paginile de manual respective pentru detalii.

Autentificator FIDO
ssh-keygen este capabil să genereze chei FIDO bazate pe autentificatorul FIDO, după care acestea pot fi utilizate la fel ca orice alt tip de cheie acceptat de OpenSSH, atât timp cât autentificatorul hardware este atașat atunci când sunt utilizate cheile. Autentificatorii FIDO necesită, în general, ca utilizatorul să autorizeze în mod explicit operațiile prin atingerea sau acoperirea acestora. Cheile FIDO sunt formate din două părți: o parte de tip gestionar de chei stocată în fișierul de chei private de pe disc și o cheie privată pentru fiecare dispozitiv, care este unică pentru fiecare autentificator FIDO și care nu poate fi exportată de pe hardware-ul autentificatorului. Acestea sunt combinate de hardware în momentul autentificării pentru a obține cheia reală care este utilizată pentru a semna provocările de autentificare. Tipurile de chei acceptate sunt ecdsa-sk și ed25519-sk.

Opțiunile care sunt valabile pentru cheile FIDO sunt:

application
    Substituie șirul implicit de aplicație/origine FIDO de “ssh:”. Acest lucru poate fi util atunci când se generează chei rezidente specifice gazdei sau domeniului. Șirul de aplicații specificat trebuie să înceapă cu “ssh:”.

challenge=ruta
    Specifică o rută către un șir de provocare care va fi transmis autentificatorului FIDO în timpul generării cheii. Șirul de provocare poate fi utilizat ca parte a unui protocol în afara benzii pentru înscrierea cheii (în mod implicit, se utilizează o provocare aleatorie).

device
    Specifică în mod explicit un dispozitiv fido(4) care să fie utilizat, în loc să lase intermedierea selectării unuia în seama autentificatorului.

no-touch-required
    Indică faptul că cheia privată generată nu trebuie să necesite evenimente de atingere (prezența utilizatorului) atunci când se realizează semnăturile. Rețineți că sshd(8) va refuza în mod implicit astfel de semnături, cu excepția cazului în care nu este suprascrisă prin intermediul unei opțiuni authorized_keys.

resident
    Indică faptul că gestionarul de chei ar trebui să fie stocat chiar în autentificatorul FIDO. Acest lucru facilitează utilizarea autentificatorului pe mai multe calculatoare. Cheile rezidente pot fi acceptate pe autentificatorii FIDO2 și necesită, de obicei, ca un PIN să fie stabilit pe autentificator înainte de generare. Cheile rezidente pot fi încărcate de pe autentificator utilizând ssh-add(1). Stocarea ambelor părți ale unei chei pe un autentificator FIDO crește probabilitatea ca un atacator să poată utiliza un dispozitiv autentificator furat.

user
    Un nume de utilizator care urmează să fie asociat unei chei rezidente, înlocuind numele de utilizator implicit gol. Specificarea unui nume de utilizator poate fi utilă atunci când se generează mai multe chei rezidente pentru același nume de aplicație.

verify-required
    Indică faptul că această cheie privată trebuie să necesite verificarea utilizatorului pentru fiecare semnătură. Nu toți autentificatorii FIDO acceptă această opțiune. În prezent, autentificarea prin PIN este singura metodă de verificare acceptată, dar este posibil ca în viitor să fie acceptate și alte metode.

write-attestation=ruta
    Poate fi utilizată în momentul generării cheilor pentru a înregistra datele de atestare returnate de către autentificatorii FIDO în timpul generării cheilor. Aceste informații sunt potențial sensibile. În mod implicit, aceste informații sunt eliminate.

LISTE DE REVOCARE A CHEILOR
ssh-keygen este capabil să gestioneze listele de revocare a cheilor (KRL) în format OpenSSH. Aceste fișiere binare specifică cheile sau certificatele care urmează să fie revocate folosind un format compact, necesitând doar un singur bit pentru fiecare certificat, dacă acestea sunt revocate după numărul de serie.

KRL-urile pot fi generate utilizând fanionul -k. Această opțiune citește unul sau mai multe fișiere din linia de comandă și generează un nou KRL. Fișierele pot conține fie o specificație KRL (a se vedea mai jos), fie chei publice, enumerate una pe linie. Cheile publice simple sunt revocate prin enumerarea sumei lor de control sau a conținutului lor în KRL, iar certificatele sunt revocate prin numărul de serie sau ID-ul cheii (dacă numărul de serie este zero sau nu este disponibil).

Revocarea cheilor utilizând o specificație KRL oferă un control explicit asupra tipurilor de înregistrări utilizate pentru revocarea cheilor și poate fi utilizată pentru a revoca direct certificatele în funcție de numărul de serie sau de ID-ul cheii fără a avea la îndemână certificatul original complet. O specificație KRL constă în linii care conțin una dintre următoarele directive, urmată de două puncte și de unele informații specifice directivei.

serial: număr-serie[-număr-serie]
    Revocă un certificat cu numărul de serie specificat. Numerele de serie sunt valori pe 64 de biți, fără zero și pot fi exprimate în zecimal, hexazecimal sau octal. În cazul în care se specifică două numere de serie separate de o cratimă, atunci se revocă intervalul de numere de serie care include și se află între ele. Cheia CA trebuie să fi fost specificată în linia de comandă ssh-keygen cu ajutorul opțiunii -s.

id: id-cheie
    Revocă un certificat cu șirul de identificare a cheii specificat. Cheia CA trebuie să fi fost specificată în linia de comandă ssh-keygen cu ajutorul opțiunii -s.

key: cheie-publică
    Revocă cheia specificată. Dacă este listat un certificat, atunci acesta este revocat ca o cheie publică simplă.

sha1: cheie-publică
    Revocă cheia specificată prin includerea sumei de control SHA1 a acesteia în KRL.

sha256: cheie-publică
    Revocă cheia specificată prin includerea sumei de control SHA256 a acesteia în KRL. KRL-urile care revocă cheile prin intermediul sumelor de control SHA256 nu sunt acceptate de versiunile OpenSSH anterioare la versiunea 7.9.

hash: amprentă-digitală
    Revocă o cheie folosind o sumă de control de amprentă digitală, așa cum este obținută dintr-un mesaj de jurnal de autentificare sshd(8) sau din fanionul ssh-keygen -l. Numai amprentele SHA256 sunt acceptate aici, iar KRL-urile rezultate nu sunt acceptate de versiunile OpenSSH anterioare la versiunea 7.9.

KRL-urile pot fi actualizate utilizând fanionul -u în plus față de -k. Atunci când este specificată această opțiune, cheile listate prin intermediul liniei de comandă sunt încorporate în KRL, adăugându-se la cele deja existente.

De asemenea, este posibil, având în vedere un KRL, să se testeze dacă acesta revocă o anumită cheie (sau chei). Fanionul -Q va interoga un KRL existent, testând fiecare cheie specificată în linia de comandă. Dacă una dintre cheile enumerate în linia de comandă a fost revocată (sau dacă s-a întâlnit o eroare), atunci ssh-keygen va ieși cu o stare de ieșire diferită de zero. O stare de ieșire zero va fi returnată numai dacă nicio cheie nu a fost revocată.

SEMNATARI AUTORIZAȚI
La verificarea semnăturilor, ssh-keygen utilizează o listă simplă de identități și chei pentru a determina dacă o semnătură provine dintr-o sursă autorizată. Acest fișier „semnatari autorizați” utilizează un format asemănător cu cel al FORMATULUI FIȘIERULUI AUTHORIZED_KEYS descris în sshd(8). Fiecare linie a fișierului conține următoarele câmpuri separate prin spații: principals, options, keytype, keytype, base64-encoded key. Liniile goale și liniile care încep cu un ‘#’ sunt ignorate ca fiind comentarii.

Câmpul „principals” este o listă de modele (a se vedea MODELE în ssh_config(5)) constând din unul sau mai multe modele de identitate UTILIZATOR@DOMENIU separate prin virgule care sunt acceptate pentru semnare. La verificare, identitatea prezentată prin intermediul opțiunii -I trebuie să se potrivească cu un model de „principals” pentru ca cheia corespunzătoare să fie considerată acceptabilă pentru verificare.

Opțiunile (dacă sunt prezente) constau în specificații de opțiuni separate prin virgule. Nu sunt permise spațiile, cu excepția celor între ghilimele duble. Sunt acceptate următoarele specificații ale opțiunilor (a se observa că cuvintele cheie ale opțiunilor nu țin cont de majuscule și minuscule):

cert-authority
    Indică faptul că această cheie este acceptată ca autoritate de certificare (CA) și că certificatele semnate de această CA pot fi acceptate pentru verificare.

namespaces=listă-spații-nume
    Specifică o listă de spații de nume acceptate pentru această cheie. Dacă această opțiune este prezentă, spațiul de nume al semnăturii încorporat în obiectul semnătură și prezentat în linia de comandă de verificare trebuie să corespundă listei specificate pentru ca cheia să fie considerată acceptabilă.

valid-after=marcaj-de-timp
    Indică faptul că cheia este valabilă pentru utilizare la sau după data și ora specificate, care poate fi o dată sau o oră în formatul AAAALLZZ[Z] sau AAAALLZZHHMM[SS][Z]. Datele și orele vor fi interpretate în fusul orar curent al sistemului, cu excepția cazului în care sunt sufixate cu un caracter Z, ceea ce face ca acestea să fie interpretate în fusul orar UTC.

valid-before=marcaj-de-timp
    Indică faptul că cheia este valabilă pentru utilizare la sau înainte de data și ora specificate.

Atunci când se verifică semnăturile realizate prin certificate, numele principalului așteptat trebuie să corespundă atât cu modelul principalilor din fișierul cu semnatari autorizați, cât și cu principalii încorporați în certificatul propriu-zis.

Un exemplu de fișier de semnatari autorizați:

    # Comentarii permise la începutul liniei
    utilizator1@example.com,utilizator2@example.com ssh-rsa AAAAX1...
    # O autoritate de certificare, de încredere pentru toți principalii dintr-un domeniu.
    *@example.com cert-authority ssh-ed25519 AAAB4...
    # O cheie care este acceptată numai pentru semnarea fișierelor.
    utilizator2@example.com namespaces="file" ssh-ed25519 AAA41...

MEDIU

SSH_SK_PROVIDER
    Specifică o rută către o bibliotecă care va fi utilizată la încărcarea oricăror chei găzduite de autentificatorul FIDO, înlocuind opțiunea implicită de utilizare a suportului USB HID încorporat.

FIȘIERE
~/.ssh/id_ecdsa
~/.ssh/id_ecdsa_sk
~/.ssh/id_ed25519
~/.ssh/id_ed25519_sk
~/.ssh/id_rsa
    Conține identitatea de autentificare ECDSA,găzduită de autentificatorul ECDSA , identitatea de autentificare Ed25519, găzduită de autentificatorul Ed25519 sau identitatea de autentificare RSA a utilizatorului. Acest fișier nu trebuie să poată fi citit decât de utilizator. Este posibil să se specifice o frază de acces atunci când se generează cheia; această frază de acces va fi utilizată pentru a cripta partea privată a acestui fișier utilizând AES pe 128 de biți. Acest fișier nu este accesat automat de ssh-keygen, dar este oferit ca fișier implicit pentru cheia privată. ssh(1) va citi acest fișier atunci când se face o încercare de conectare.

~/.ssh/id_ecdsa.pub
~/.ssh/id_ecdsa_sk.pub
~/.ssh/id_ed25519.pub
~/.ssh/id_ed25519_sk.pub
~/.ssh/id_rsa.pub
    Conține cheia publică ECDSA, găzduită de autentificatorul ECDSA, cheia publică Ed25519, găzduită de autentificatorul Ed25519 sau cheia publică RSA pentru autentificare. Conținutul acestui fișier trebuie adăugat la ~/.ssh/authorized_keys pe toate mașinile la care utilizatorul dorește să se conecteze folosind autentificarea cu cheie publică. Nu este necesar să păstrați secret conținutul acestui fișier.

/etc/ssh/moduli
    Conține grupurile Diffie-Hellman utilizate pentru DH-GEX. Formatul fișierului este descris în moduli(5).

CONSULTAȚI ȘI
ssh(1), ssh-add(1), ssh-agent(1), moduli(5), sshd(8) RFC 4716, The Secure Shell (SSH) Public Key File Format, 2006.

AUTORI
OpenSSH este un derivat al versiunii originale și libere ssh 1.2.12 de Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt și Dug Song au eliminat multe erori, au adăugat din nou caracteristici noi și au creat OpenSSH. Markus Friedl a contribuit la suportul pentru versiunile 1.5 și 2.0 ale protocolului SSH.

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3: https://www.gnu.org/licenses/gpl-3.0.html sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.