Ottenere SHA1 Digest della chiave pubblica SSH
Sembra che questo dovrebbe essere facile. Ho eseguito "ssh–keygen -l -f" (il valore predefinito sembra essere SHA1). Tutti gli esempi mostrano che printingre il digest formato esadecimale con un po 'di informazioni extra, innocue. Eppure, sul mio Mac ho una string inutile e opaca.
Vorrei ricordare che il parametro "-E" funziona su Mac (10.10) ma non è disponibile in Ubuntu (14.04). Tener presente che se non funziona per te.
$ ssh-keygen -l -E md5 -f dustin.pem 2048 MD5:29:ed:da:d3:5a:8c:78:4f:62:d3:fd:0c:77:5b:6d:d9 dustin.pem.pub (RSA) $ ssh-keygen -l -E sha1 -f dustin.pem 2048 SHA1:x2ENPL+vzVdlgkIyu0tAhVQ+H4U dustin.pem.pub (RSA) $ ssh-keygen -l -E sha256 -f dustin.pem 2048 SHA256:agJs/axI8QPzet/eoPMDxLSf37fd1bgsMX4Di0gqMy4 dustin.pem.pub (RSA)
Entrambi i tentativi di algoritmi SHA restituiscono opache, ma diverse stringhe ASCII.
Che cosa mi manca? Come faccio ad get un hex-digest SHA1 senza wherer copiare la chiave in un sistema Linux per farlo?
Grazie.
2 Solutions collect form web for “Ottenere SHA1 Digest della chiave pubblica SSH”
Tradizionalmente OpenSSH ha mostrato (pubbliche) le impronte digitali usando MD5 in esagono, o opzionalmente come 'ASCII art' o 'bubblebabble' (una serie di sciocchezze ma pronunciabili lettere a cinque lettere); 6.8 di marzo 2015 ha aggiunto opzioni per SHA1 e SHA256 in (PEMstyle) base64 , con quest'ultimo ora il default, e in tutti e tre i casi il nome hash prefisso in modo da sapere che è. ssh-keygen -l
ha l'opzione -E
solo da allora, e Ubuntu 14.04 è data da prima di marzo 2015.
Non è necessario disporre di un digest SHA1 in esagono per la verifica di un host, in quanto il client ssh
non visualizza mai questo solo MD5 esadecimale o SHA1-base64 (non per impostazione predefinita) o SHA256-base64. Se lo vuoi comunque, potete farlo abbastanza facilmente tranne un tasto 'rsa1' e avresti dovuto smettere di usare il protocollo SSHv1 e quindi i tasti rsa1 prima che Barack Obama diventasse Presidente degli Stati Uniti.
Prendi la baseball 'blob' da
- field 2 di
id_$alg.pub
o file simile, o output dissh-keygen -y
- field 3 della row nel file
known_hosts
less che non disponga di un segnalino quindi field 4 - field 2 della row nel file
authorized_keys
less che non disponga di opzioni quindi field 3
e convertirlo da base64 a binario, hash che con il hash desiderato e visualizzare nella rappresentazione desiderata. Poiché openssl
per default visualizza gli hash in esagono e può convertire da (e) a base64, si potrebbe fare qualcosa di simile
awk '{$print $2}' id_xxx.pub | openssl base64 -d -A | openssl sha1
Si noti la -A
; altrimenti openssl silenziosamente non riesce a decodificare base64 più di 76 caratteri e blobs pubblici OpenSSH tranne ed25519 sono più lunghi.
Si noti inoltre che è ansible indicare un nuovo client ssh
per visualizzare la vecchia impronte -o FingerprintHash=MD5
con -o FingerprintHash=MD5
o un'impostazione equivalente ssh_config
.
Quelle stringhe appaiono hashes codificate base64 .