Mi respuesta es que usar pares de claves públicas es una cosa mucho más inteligente que hacer que usar contraseñas o listas de contraseñas. Me centraré en las cosas que no se conocen ampliamente sobre diferentes formas de autenticación SSH, y no veo otras respuestas que las mencionen.
En primer lugar, debe comprender que la autenticación del usuario es un proceso diferente y separado del establecimiento del canal seguro . En términos simples, lo que esto significa es que primero, se usa la clave pública del servidor (¡si se acepta!) Para construir el canal SSH seguro, al permitir la negociación de una clave simétrica que se usará para proteger la sesión restante, habilitar el canal confidencialidad, protección de integridad y autenticación del servidor.
Después de el canal es funcional y seguro, se lleva a cabo la autenticación del usuario.
Las dos formas habituales de hacerlo es mediante una contraseña o un par de claves públicas.
La autenticación basada en contraseña funciona como se puede imaginar: el cliente envía su contraseña a través del canal seguro, el servidor verifica que esta es la contraseña del usuario específico y permite el acceso.
En el caso de clave pública, tenemos una situación muy diferente. En este caso, el servidor tiene almacenada la clave pública del usuario. Lo que sucede a continuación es que el servidor crea un valor aleatorio (nonce), lo cifra con la clave pública y lo envía al usuario. Si el usuario es quien se supone que debe ser, puede descifrar el desafío y enviarlo de vuelta al servidor, quien confirma la identidad del usuario. Es el clásico modelo de desafío-respuesta . (En SSHv2 se usa algo un poco diferente pero conceptualmente cercano)
Como puede imaginar, en el primer caso, la contraseña realmente se envía al servidor (a menos que SSH use la respuesta de desafío de contraseña), en el segundo, su clave privada nunca abandona el cliente. En el escenario imaginario, alguien intercepta el tráfico SSL y puede descifrarlo (utilizando una clave privada del servidor comprometida, o si acepta una clave pública incorrecta al conectarse al servidor) o tiene acceso al servidor o cliente, su contraseña será conocido: con la autenticación de clave pública-privada y el modelo de respuesta de desafío, sus detalles privados nunca caerán en las manos del atacante.
Entonces, incluso si un servidor al que te conectas está comprometido, otros servidores para los que utilices la misma clave no lo serían.
Hay otras ventajas de usar un par de claves públicas: la clave privada no debe almacenarse en texto sin cifrar en la PC de su cliente como sugiere. Por supuesto, esto deja el archivo de clave privada abierto para comprometerse, como lo haría un archivo de contraseña no cifrado, pero es más fácil de descifrar (al iniciar sesión) y usar la clave privada. Debe almacenarse encriptado y necesita que proporcione una frase de contraseña generalmente larga para descifrarla cada vez que se use.
Por supuesto, esto significa que tendrá que proporcionar la contraseña larga cada vez que se conecte a un servidor, para desbloquear su clave privada. Puede aumentar la capacidad de uso del sistema utilizando un agente de autenticación: este es un software que desbloquea las claves de la sesión actual, cuando inicia sesión en gnome, por ejemplo, o cuando inicia sesión por primera vez en su cliente, por lo que puede escriba 'ssh remote-system-ip' e inicie sesión, sin proporcionar una frase de contraseña, y hágalo varias veces hasta que cierre sesión en su sesión.
Por lo tanto, para resumir, el uso de pares de claves públicas ofrece considerablemente más protección que el uso de contraseñas o listas de contraseñas que se pueden capturar si el cliente , el servidor o la sesión segura está comprometida . En el caso de no usar una frase de paso (que no debería ocurrir), los pares de claves públicas aún ofrecen protección contra las sesiones y servidores comprometidos.