¿Cómo se prueba un par de claves DSA público/privado?


¿Hay una manera fácil de verificar que una clave privada dada coincide con una clave pública dada? Tengo algunos *.pub, and a few *.archivos clave, y necesito comprobar cuál va con cuál.

De nuevo, estos son archivos pub/key, DSA.

Realmente preferiría una sola línea de algún tipo...

Author: Jeff Atwood, 2008-11-08

10 answers

Encontré una manera que parece funcionar mejor para mí:

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

Ese comando generará la clave pública para la clave privada dada, así que simplemente compare la salida con cada *.archivo pub.

 239
Author: Loki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-08 12:22:00

Siempre comparo un hash MD5 del módulo usando estos comandos:

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

Si los hashes coinciden, entonces esos dos archivos van juntos.

 50
Author: Robert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-11 13:48:05

Para las claves DSA, use

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

Para imprimir las claves públicas, entonces

 openssl dsa -in dsa.key -modulus -noout

Para mostrar las claves públicas correspondientes a una clave privada, luego compárelas.

 46
Author: Martin v. Löwis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-08 11:06:04

Asumiendo que tiene las claves públicas dentro de los certificados x. 509, y asumiendo que son claves RSA, entonces para cada clave pública, haga

    openssl x509 -in certfile -modulus -noout

Para cada clave privada, haga

    openssl rsa -in keyfile -modulus -noout

Luego haga coincidir las teclas por módulo.

 14
Author: Martin v. Löwis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-08 10:50:48

La comprobación se puede hacer más fácil con diff:

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

Lo único extraño es que diff no dice nada si los archivos son los mismos, por lo que solo se le dirá si el público y el privado no coinciden.

 13
Author: John D.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-23 18:50:38

Elimine las claves públicas y genere nuevas a partir de las claves privadas. Manténgalos en directorios separados, o use una convención de nomenclatura para mantenerlos rectos.

 6
Author: Bill the Lizard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-08 12:35:59

Si estás en Windows y quieres usar una GUI, con puttygen puedes importar tu clave privada en ella:

introduzca la descripción de la imagen aquí

Una vez importada, puede guardar su clave pública y compararla con la suya.

 2
Author: Zac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-27 10:49:06

Introduzca el siguiente comando para comprobar si una clave privada y una clave pública son un conjunto coincidente (idéntico) o no un conjunto coincidente (diferente) en $USER/.directorio ssh.

diff -qs <(ssh-keygen -yf ~/.ssh/id_rsa) <(cut -d ' ' -f 1,2 ~/.ssh/id_rsa.pub)

La salida se verá como cualquiera de estas líneas.

Files /dev/fd/63 and /dev/fd/62 are identical

Files /dev/fd/63 and /dev/fd/62 differ

Escribí un script de shell que los usuarios utilizan para comprobar el permiso de archivo de su ~/.ssh / files y conjunto de claves coincidentes. Resuelve mis desafíos con incidentes de usuario configurando ssh. Puede ayudarte.

https://github.com/BradleyA/docker-scripts/tree/master/ssh
 1
Author: Bradley Allen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-10 18:26:51
 0
Author: Mitch Wheat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-11-08 09:44:45

Simplemente use puttygen y cargue su clave privada en él. Ofrece diferentes opciones, por ejemplo, exportar la clave pública de coressponding.

 -2
Author: user2987067,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-13 09:41:06