Una buena solución es tener la clave en un dispositivo de hardware dedicado que realizará todas sus operaciones criptográficas sin siquiera revelar el material clave a la computadora host. Puede usar cualquier tarjeta PKI compatible con OpenSC , una tarjeta inteligente OpenPGP (compatible con GnuPG y OpenSC) o un Yubikey (que en este el caso se comportará como una tarjeta OpenPGP).
Para las tarjetas compatibles con OpenSC, instale OpenSC y dígale a OpenSSH que lo use:
ssh -I /usr/lib/opensc-pkcs11.so [email protected]
Para GnuPG puede usar el agente de GPG como un agente de SSH que expondrá las llaves de la tarjeta a través de eso. Tenga en cuenta que, a menos que necesite una frase de contraseña / almacenamiento en caché de PIN, recomiendo usar OpenSC sobre GPG.
En Windows, debe usar el minidriver de su tarjeta (cómo Microsoft llama al software como OpenSC); la mayoría de ellos se pueden descargar automáticamente siempre que permita que su sistema busque controladores en línea. Si no se encuentra un minidriver oficial, puede usar la compilación de Windows de OpenSC que incluye un minidriver genérico. Tenga en cuenta que para las tarjetas OpenPGP hay un minidriver de terceros que funciona mejor que el de OpenSC (de hecho, No tuve la suerte de que el minidriver de OpenSC funcionara con la tarjeta OpenPGP, incluso si la biblioteca PKCS11 funcionaba bien, demostrando que OpenSC estaba hablando con la tarjeta).
Una vez que se instale el minidriver, el software podrá comunicarse con la tarjeta utilizando la API criptográfica estándar del sistema (la tarjeta aparece como cualquier otro certificado en el almacén de certificados del usuario). PuTTY-CAC es un programa de este tipo que puede aprovechar esos certificados (y tarjetas), incluye el propio PuTTY y el concurso. , Equivalente de PuTTY de un agente SSH. Si en Cygwin / MSYS puede usar ssh-pageant
para convertir un Pageant en ejecución en un agente de SSH que puede ser usado por el estándar ssh
(un puente directo entre CAPI y SSH hubiera sido mejor, pero aún no existe tal cosa) ).