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