El mensaje que está viendo es un tema aparte. Le está pidiendo que confirme que el host al que se está conectando es realmente el que espera que sea. Desde el servidor, puede obtener la huella digital ejecutando ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
. Luego, cuando se conecta de forma remota por primera vez, puede asegurarse de que las huellas digitales coincidan.
Las claves de host, vistas en acción aquí, abordan el problema del hombre en los ataques intermedios : tal vez el DNS se ha subvertido y se está conectando a la máquina de un competidor en lugar de la suya. Esa máquina reúne sus credenciales y reenvía su conexión al servidor real de forma transparente, robando su información sin que usted lo sepa. Asegurarse de que la clave del host coincida evita que esto suceda a menos que el atacante haya robado la clave pública de su servidor.
Sin embargo, sigue habiendo un problema: ¿cómo saber qué clave es la correcta? Después de la primera conexión, la clave pública se almacena en su ~/.ssh/known_hosts
archivo, por lo que las conexiones posteriores están bien. Pero la primera vez, o necesita alguna forma fuera de banda para obtener la huella digital, o bien sigue el modelo "TOFU": confianza en el primer uso.
Pero nada de esto tiene nada que ver con las contraseñas frente a las claves, excepto que tanto las claves como las contraseñas podrían ser robadas a través de este ataque; en cierto sentido, es la vulnerabilidad que está solicitando.
Hay (al menos) tres razones por las que las contraseñas son peores que las claves:
- Pueden ser forzados por la fuerza bruta. Una contraseña típica de 8 caracteres seleccionada por el usuario tiene alrededor de 30 bits de adivinanza-entropía. Un par de claves pública / privada ssh es de 1024 bits o más. Es realmente imposible forzar con fuerza bruta una clave ssh, pero las suposiciones automáticas de contraseñas ocurren todo el tiempo.
- Pueden ser tontos. Los usuarios seleccionan rutinariamente contraseñas horribles, incluso con restricciones establecidas, y tienden a usar contraseñas más difíciles en varios lugares. Obviamente, esto hace que los ataques sean más fáciles.
- Las contraseñas se pueden robar de forma remota. Cuando usa SSH, la contraseña se cifra en el cable, pero es muy común que el servidor ssh sea reemplazado en sistemas comprometidos por uno que registre todas las contraseñas. Con las claves, la clave privada permanece en el sistema local y nunca se envía, por lo que no puede ser robada sin comprometer la máquina del cliente.
Además, las teclas ssh ofrecen conveniencia cuando se usan con algo como ssh-agent
: obtienes la operación sin problemas de conectarte sin volver a autenticarse cada vez, manteniendo un grado razonable de seguridad.
No hay una ventaja significativa en pedir ambas, ya que alguien que tiene acceso suficiente para robar la clave privada también puede robar fácilmente la contraseña del usuario. Si necesita más seguridad que esto, considere buscar un sistema de autenticación de dos factores como RSA SecurID o WiKID .