Como comprobar que una llave publica y privada coinciden entre ellas

Este post tiene que ver con criptografía asimétrica o criptografía de clave pública, por lo que luego de generar las llaves publicas y privadas, ya sean basadas en algoritmo RSA o DSA, podemos verificar que entre ellas coinciden ejecutando lo siguiente: 

Para verificar una llave creada usando RSA ejecutaremos:

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

Si no genera ninguna tipo de salida, quiere decir que tanto la llave publica como la privada coinciden en cambio si el output del anterior comando es parecido a lo siguiente:

1c1
< AAAAB3NzaC1yc2EAAAADAQABAAABAQC7HYoJqQiVMI/oxYKzEKU1nNUX/Ha5o7Kwab8hPSalh4q0DP+bFTc0c0BrRTcCYddvjnYbX4d8JefefefvM08gXeCt1+caeJ50byQ8k922wBzJhhVlbXED9x4F1fkWIg3PoPAJa0c3DnrHx2bRFKIHKGC70GLLxqyWhlomHZqfu6OoWRjX4xEqXVZoXLzFcDeXrm8AzWNFTwz+hdDmP
---
> AAAAB3NzaC1yc2EAAAADAQABAAABAQDCD8PA40DL71xtwa74pI6pBv3fDgWG5pUq1UENLok0rwH+6Xjg0e85hLJceVVFX4cnwghSFAKbWISwQD3BR45pNyYqEI5xgxNIh/8P4kjzSKHGBHAy9kzDZU4rCwihJ21v2r0GDYqu6olw6qhMXxVXWvspDw85fTTnG4ctrZocETvdn1Pk3VOS3VUOlADEUwbhtCbylTxGPbPGO/k+p8dhmw1

Quiere decir que son totalmente distintas.

Ahora bien para verificar si una llave publica y privada en el formato DSA coinciden, ejecutamos el comando anterior pero cambiando la ubicacion y el nombre de las llaves publicas y privadas, por ejemplo:

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