GNU/Linux >> Linux Esercitazione >  >> Linux

Come verificare se una coppia di chiavi pubblica/privata RSA corrisponde

Soluzione 1:

Preferirei il ssh-keygen -y -e -f <private key> way invece della risposta accettata di Come si testa una coppia di chiavi DSA pubblica/privata? su Stack Overflow.

ssh-keygen -y -e -f <private key> prende una chiave privata e stampa la chiave pubblica corrispondente che può essere confrontata direttamente con le chiavi pubbliche disponibili. (Suggerimento:attenzione ai commenti o alle opzioni dei tasti.)

(Come diavolo fa? Posso solo sperare che la chiave pubblica sia codificata direttamente o indirettamente nella chiave privata...)

Ne avevo bisogno io stesso e ho usato la seguente battuta di Bash. Non dovrebbe produrre nulla se le chiavi appartengono insieme. Applica un piccolo -q al diff negli script e diff imposta solo il codice di ritorno in modo appropriato.

PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )

Soluzione 2:

A seconda di dove ottieni il file della chiave pubblica che stai testando, la risposta accettata potrebbe dare risultati falsi positivi. Ciò è dovuto al comportamento descritto nel commento di @drewbenn. Nello specifico, quando l'opzione -e viene utilizzata con il file della chiave privata come parametro dell'opzione -f, ripete semplicemente a pappagallo (ma riformatta) il contenuto del file della chiave pubblica associato.

In altre parole,

ssh-keygen -y -f id_rsa

(apparentemente) genera il valore della chiave pubblica e

ssh-keygen -y -e -f id_rsa

semplicemente e restituisce (e riformatta) la chiave nell'esistente id_rsa.pub qualunque cosa sia .

Nel mio caso, devo verificare che la coppia non sia stata danneggiata. Quindi, ho deciso di confrontare quanto segue:

ssh-keygen -y -f id_rsa | cut -d' ' -f 2

con

cut -d' ' -f 2 id_rsa.pub

Pertanto:

diff <(cut -d' ' -f 2 id_rsa.pub) <(ssh-keygen -y -f id_rsa | cut -d' ' -f 2)

Forse questo non è così flessibile, ma è meglio per le mie esigenze. Forse aiuta qualcun altro.

Soluzione 3:

Se sono sul tuo sistema locale, incolla id_rsa.pub nel tuo $HOME/.ssh/authorized_keys e ssh a localhost usando il id_rsa chiave. Se funziona, corrispondono.

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

Linux
  1. Come importare la chiave privata in FileZilla per SFTP

  2. Come recuperare la chiave pubblica da una chiave privata Ssh?

  3. Come abbinare le coppie di chiavi pubbliche e private Openpgp esportate?

  4. Che cos'è la crittografia a chiave pubblica (Come funzionano le VPN, parte 2)

  5. Come crittografare un file di grandi dimensioni in openssl utilizzando la chiave pubblica

Come controllare la versione di Python

Come controllare la versione Java

Come configurare la chiave pubblica e privata SSH in Linux

Come controllare la versione OpenGL?

Come aggiungere la chiave pubblica SSH al server

Come convertire la chiave privata di PuTTY (.ppk) in chiave SSH