Domanda

Esiste un modo semplice per verificare che una determinata chiave privata corrisponda a una determinata chiave pubblica?Ho alcuni file *.pub e alcuni file *.key e devo verificare quale abbinare.

Ancora una volta, questi sono file pub/key, DSA.

Preferirei davvero una battuta di qualche tipo...

È stato utile?

Soluzione

Ho trovato un modo che sembra funzionare meglio per me:

ssh-keygen -y -f <private key file>

quel comando genererà la chiave pubblica per la chiave privata specificata, quindi confronta l'output con ciascun file * .pub.

Altri suggerimenti

Confronto sempre un hash MD5 del modulo usando questi comandi:

Certificate: openssl x509 -noout -modulus -in server.crt | openssl md5
Private Key: openssl rsa -noout -modulus -in server.key | openssl md5
CSR: openssl req -noout -modulus -in server.csr | openssl md5

Se gli hash corrispondono, questi due file vanno insieme.

Per le chiavi DSA, utilizzare

 openssl dsa -pubin -in dsa.pub -modulus -noout

per stampare le chiavi pubbliche, quindi

 openssl dsa -in dsa.key -modulus -noout

per visualizzare le chiavi pubbliche corrispondenti a una chiave privata, quindi confrontarle.

Supponendo che tu abbia le chiavi pubbliche all'interno dei certificati x.509 e supponendo che siano chiavi RSA, quindi per ogni chiave pubblica, fai

    openssl x509 -in certfile -modulus -noout

Per ogni chiave privata, fare

    openssl rsa -in keyfile -modulus -noout

Quindi abbina le chiavi per modulo.

Il controllo può essere reso più semplice con diff:

diff <(ssh-keygen -y -f <private_key_file>) <public key file>

L'unica cosa strana è che diff non dice nulla se i file sono gli stessi, quindi ti verrà detto solo se public e private non incontro.

Elimina le chiavi pubbliche e generane di nuove dalle chiavi private. Tienili in directory separate o usa una convenzione di denominazione per mantenerli diritti.

Se sei in Windows e desideri utilizzare una GUI, con puttygen puoi importare la tua chiave privata in esso:

 inserisci qui la descrizione dell'immagine

Una volta importato, puoi salvare la sua chiave pubblica e confrontarla con la tua.

Immettere il comando seguente per verificare se una chiave privata e una chiave pubblica sono un set corrispondente (identico) o non un set corrispondente (diverso) nella directory $ USER / .ssh. Il comando cut impedisce il confronto del commento alla fine della riga nella chiave pubblica, consentendo solo il confronto della chiave.

ssh-keygen -y -f ~/.ssh/id_rsa | diff -s - <(cut -d ' ' -f 1,2 ~/.ssh/id_rsa.pub)

L'output apparirà come una di queste righe.

Files - and /dev/fd/63 are identical

Files - and /dev/fd/63 differ

Ho scritto uno script di shell che gli utenti usano per controllare i permessi dei loro file ~ / .ssh / e il set di chiavi abbinato. Risolve le mie sfide con incidenti utente che configurano ssh. Potrebbe esserti d'aiuto. https://github.com/BradleyA/docker-security-infrastructure/ albero / master / ssh

Nota: la mia risposta precedente (a marzo 2018) non funziona più con le ultime versioni di openssh. Risposta precedente: diff -qs & Lt; (ssh-keygen -yf ~ / .ssh / id_rsa) & Lt; (cut -d '' -f 1,2 ~ / .ssh / id_rsa.pub)

Crittografa qualcosa con la chiave pubblica e vedi quale chiave privata la decodifica.

Questo articolo di progetto in codice nientemeno che Jeff Atwood implementa un semplificato wrapper attorno alle classi di crittografia .NET. Supponendo che queste chiavi siano state create per l'uso con RSA, utilizzare la classe asimmetrica con la chiave pubblica per crittografare e lo stesso con la chiave privata per decrittografare.

Se non restituisce nulla, corrispondono:

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost

Usa puttygen e carica la tua chiave privata in esso. Offre diverse opzioni, ad es. esportando la chiave pubblica corrispondente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top