bitlvl
IT

Impronta e convertitore di chiavi SSH

Incolla il contenuto di un file .pub, o una chiave pubblica PEM. Ottieni le impronte che stamperebbe ssh-keygen, i dettagli della chiave, l’altro formato e una riga authorized_keys con le restrizioni che scegli.

Riga authorized_keys

I risultati e i messaggi di questo strumento sono mostrati in inglese.

Impronte

Un’impronta è un hash del blob della chiave pubblica, abbastanza corto da confrontare a occhio. OpenSSH mostra SHA-256 in Base64 (SHA256:…) dalla versione 6.8; la forma più vecchia MD5:xx:xx:… è quella che GitHub, AWS e la vecchia documentazione mostrano ancora per alcune chiavi. Entrambe vengono calcolate qui dagli stessi byte che ssh-keygen -lf key.pub hasha, quindi corrispondono esattamente. Usale per confermare che una chiave in authorized_keys è quella che pensi, per confrontare un avviso di host key con l’output di ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub sul server, e per identificare le chiavi nelle console cloud.

Tipi di chiave

TipoDimensioneVerdetto
ssh-ed25519256 bitLa scelta migliore: piccola, veloce, nessun errore di parametri possibile. Supportata da OpenSSH 6.5 (2014).
ssh-rsa2048–4096Va bene con firme SHA-2 (rsa-sha2-256/512, automatiche nell’OpenSSH attuale); 3072+ bit per le nuove chiavi. Il nome del tipo è lo stesso sia con firme SHA-1 sia SHA-2.
ecdsa-sha2-nistp256/384/521256–521Va bene, ma Ed25519 è preferibile; le curve NIST dipendono da una buona casualità al momento della firma.
ssh-dss1024Obsoleta; disabilitata di default dalla 7.0 e rimossa nella 9.8.
[email protected]256Chiave memorizzata su una chiave di sicurezza FIDO2 (YubiKey); richiede un tocco a ogni uso.

Formati

La riga singola OpenSSH è tipo blob-base64 commento, dove il blob è il nome del tipo e i campi della chiave come stringhe con prefisso di lunghezza. Il PEM PUBLIC KEY (SubjectPublicKeyInfo) è ciò che vogliono OpenSSL, le librerie JWT e la maggior parte del software non SSH. ssh-keygen -e -m PKCS8 -f key.pub converte in una direzione e ssh-keygen -i -m PKCS8 nell’altra; questa pagina fa entrambe senza i flag.

Limitare una chiave

Le opzioni all’inizio di una riga di authorized_keys limitano cosa può fare la chiave: from= limita gli indirizzi di origine, command= forza un unico comando (l’originale è disponibile in $SSH_ORIGINAL_COMMAND), e restrict disabilita forwarding, PTY e agent in una sola parola. Una chiave di backup dovrebbe essere restrict,command="rrsync /backup"; una chiave di deploy non dovrebbe permettere altro che lo script di deploy.

Domande

Come ottengo la mia chiave pubblica?

cat ~/.ssh/id_ed25519.pub (o id_rsa.pub). Se hai solo la chiave privata: ssh-keygen -y -f ~/.ssh/id_ed25519 stampa la parte pubblica. Non incollare mai la chiave privata (il file senza .pub) da nessuna parte.

Perché GitHub mostra un’impronta diversa?

GitHub mostra impronte SHA256 per le chiavi aggiunte dal 2018 e MD5 per quelle più vecchie. Confronta il formato corrispondente; qui sono mostrati entrambi. Assicurati anche di guardare lo stesso file di chiave.

Come verifico l’impronta della host key di un server?

Sul server: ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub. Confrontala con quella che il client stampa alla prima connessione. I provider cloud la mostrano nella console o nel log seriale; GitHub pubblica le sue impronte nella documentazione.

Può convertire una chiave privata?

No, per scelta. La conversione delle chiavi private va fatta sulla tua macchina: ssh-keygen -p -m PEM -f key (OpenSSH → PEM) o ssh-keygen -p -m RFC4716. Nulla di ciò che incolli qui viene inviato da qualche parte, ma una chiave privata non dovrebbe mai entrare in un browser.