Recientemente comencé a usar claves SSH en lugar de contraseñas (gracias a GitHub, por supuesto), así que tenga en cuenta que soy bastante nuevo en este concepto. Actualmente, mis claves simplemente se encuentran en ~ / .ssh, pero no estoy seguro de si es una buena práctica. Por ejemplo, si tengo varias máquinas, necesitaría duplicar mis claves privadas, lo que creo que no es deseable. O, si mi HDD se apaga, perderé esas claves, lo que (supongo) también es indeseable.
Entonces, ¿cuáles son las mejores prácticas para almacenar claves SSH de forma segura, conveniente y confiable?
Parece que usar una tarjeta inteligente es una opción (consulte Tarjetas inteligentes para almacenar claves gpg / ssh (Linux): ¿qué necesito? ) ¿ Es esta la mejor?
Actualización: la razón de la pregunta fue que muchos servicios (como GitHub, AWS EC2) proporcionan guías sobre cómo configurar las claves SSH para usar el servicio, pero poco o ningún fondo (como qué hacer si ya tiene una clave generada por ssh-keygen
[1], cuáles son las medidas de seguridad recomendadas). Y no está claro si esa información no es importante, o se espera que la conozca 'por defecto'.
Para resumir las respuestas hasta este punto (pero léalas, y si tiene algo que agregar, por favor hágalo): parece que en este caso está bien si solo deja sus claves privadas en ~ / .ssh, siempre que guárdelos de otras personas; pero asegúrese de tener otra forma de acceder al servicio para cargar o generar una nueva clave si pierde una (que normalmente es el caso).
[1] GitHub solía proporcionar ayuda sobre cómo administrar múltiples claves .
Respuestas:
No, en realidad no lo haces. Si tiene varias máquinas, simplemente cree una clave privada separada en cada una. Para cada clave privada, solo suba la clave pública correspondiente a GitHub usando el mismo proceso.
Realmente no; Si pierde su clave privada, simplemente genere una nueva y cargue la clave pública correspondiente.
Por lo que vale, tiene razón en que duplicar una clave privada es altamente indeseable. Idealmente, una clave privada debe generarse en un archivo (
~/.ssh/id_rsa
por ejemplo) y nunca debe abandonar ese archivo; es decir, nunca debe copiarse, moverse y, especialmente, no transferirse a través de una red. (por ejemplo, los excluyo de las copias de seguridad) Debido a la naturaleza de los protocolos de autenticación asimétricos, solo debe preocuparse por mantener su clave privada fuera del alcance de los demás. Si vas un poco por la borda y pierdes el rastro de ti mismo, generalmente no es gran cosa. (Esto no debe confundirse con las claves privadas de cifrado asimétrico , por ejemplo, las claves GPG, a las que probablemente desee conservar).fuente
Agregaría que ~ / .ssh / es legible por su navegador si está utilizando la misma cuenta de usuario para ejecutar ambos.
¡Intentalo! Apunte su navegador a su clave privada en su directorio de inicio. Es divertido.
Por lo tanto, recomendaría almacenar claves ssh en el directorio de inicio de otra cuenta de usuario.
una palabra sobre las claves de protección de frase de contraseña
look_at_keys.html
fuente
Hay una muy buena herramienta llamada KeePass2 ( http://keepass.info/ ) con la extensión ( http://lechnology.com/software/keeagent/ )
Puede almacenar contraseñas, claves SSH y mucho más (en la página oficial de KeePass hay extensiones mucho más útiles)
Si desea iniciar sesión automáticamente con sus claves SSH, solo necesita instalar PuTTY, Pageant y KeePass con KeeAgent. Si lo está configurando correctamente, no tiene que configurar las claves en PuTTY, Pageant o FileZilla.
Lo uso yo mismo y estoy bastante feliz por eso. Tengo más de 30 VPS y un servidor raíz con una cierta cantidad de claves SSH diferentes y lo único que tengo que hacer es abrir KeePass (no es mi contraseña segura principal) y luego solo necesito escribir en la consola mi frase de contraseña.
fuente
Recomendaría almacenar claves privadas:
Yo diría que el mejor lugar sería:
Aún mejor, simplemente imprímalo y colóquelo en una caja fuerte a prueba de fuego.
fuente
Tengo un archivo tar que tiene mi configuración de directorio de usuario (.bashrc, .ssh / y otros archivos de configuración) que guardo en un lugar seguro. Cuando obtengo una nueva cuenta de shell en cualquier lugar, descomprimo el archivo tar en ella.
Solo debe poner sus claves privadas en servidores de confianza, de lo contrario, debe crear una nueva clave privada en el servidor solo para ese servidor y permitirle el acceso a las cosas a las que desea que tenga acceso.
Personalmente, me siento cómodo simplemente copiando mi .ssh / cosas en todas partes (también significa que mediante la clave ssh regular se obtiene acceso ssh al instante, ya que ya está en el archivo autorizado_keys).
fuente
Puede almacenar sus claves ssh en un directorio separado dentro de una partición encriptada. Luego puede usar ssh apuntando a ese directorio con
-i
:Descripción completa (
man ssh
):Mi enfoque de seguridad es que divido la información en privada y general. No quiero encriptar toda la partición de mi casa, por eso copio archivos secretos (como los que están en
~/.ssh
) en una partición encriptada.Creo que esto proporciona una seguridad bastante eficiente, porque el malware no encontrará nada en ~ / .ssh, y probablemente no escaneará todo el sistema o los perfiles de shell para encontrar esa ubicación.
establece la ruta al archivo de configuración.
PD: Crearía un alias
alias ssh='ssh -i ... -F ...'
y lo pondría en tu perfil.PPS No he comprobado esto todavía, y no sé cómo otros programas (como git) funcionarán con estas configuraciones ssh.
fuente