Solución 1:
Preferiría el ssh-keygen -y -e -f <private key>
en lugar de la respuesta aceptada de ¿Cómo se prueba un par de claves DSA público/privado? en Desbordamiento de pila.
ssh-keygen -y -e -f <private key>
toma una clave privada e imprime la clave pública correspondiente que se puede comparar directamente con sus claves públicas disponibles. (Sugerencia:tenga cuidado con los comentarios o las opciones clave).
(¿Cómo demonios hace eso? Solo espero que la clave pública esté codificada directa o indirectamente en la clave privada...)
Necesitaba esto yo mismo y usé el siguiente Bash one-liner. No debería generar nada si las teclas van juntas. Aplicar un poco -q
a la diferencia en scripts y diferencia solo establece el código de retorno de manera adecuada.
PRIVKEY=id_rsa
TESTKEY=id_rsa.pub
diff <( ssh-keygen -y -e -f "$PRIVKEY" ) <( ssh-keygen -y -e -f "$TESTKEY" )
Solución 2:
Dependiendo de dónde obtenga el archivo de clave pública que está probando, la respuesta aceptada puede dar resultados falsos positivos. Esto se debe al comportamiento descrito en el comentario de @drewbenn. Específicamente, cuando la opción -e se usa con el archivo de clave privada como el parámetro de opción -f, simplemente repite (pero reformatea) lo que hay en el archivo de clave pública asociado.
En otras palabras,
ssh-keygen -y -f id_rsa
(aparentemente) genera el valor de la clave pública, y
ssh-keygen -y -e -f id_rsa
simplemente y genera (y reformatea) la clave en el existente id_rsa.pub lo que sea .
En mi caso, tengo que verificar que la pareja no se haya corrompido. Entonces, decidí comparar lo siguiente:
ssh-keygen -y -f id_rsa | cut -d' ' -f 2
con
cut -d' ' -f 2 id_rsa.pub
Por lo tanto:
diff <(cut -d' ' -f 2 id_rsa.pub) <(ssh-keygen -y -f id_rsa | cut -d' ' -f 2)
Quizás esto no sea tan flexible, pero es mejor para mis necesidades. Tal vez ayude a alguien más.
Solución 3:
Si están en su sistema local, pegue id_rsa.pub
en tu $HOME/.ssh/authorized_keys
y ssh
a localhost
usando el id_rsa
llave. Si funciona, entonces coinciden.
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
ssh -i $HOME/.ssh/id_rsa localhost