En el caso de autenticación por password, siempre que un equipo cliente va a conectarse por primera vez de forma remota al equipo servidor, recibe un aviso indicando que la clave pública del servidor remoto no está en su anillo de confianza. Esto es un indicativo de que no se puede garantizar la autenticidad del servidor. Por ejemplo, si la IP del servidor SSH al que el equipo cliente desea conectarse es 192.168.1.90, el mensaje mostrado sería el siguiente:
6.2.2. Autenticación del servidor SSH
The authenticity of host '192.168.1.90 (192.168.1.90)' can't be established
Are you sure you want to continue connecting (yes/no)?
Ante esta cuestión existen dos opciones:
- Si se responde yes, se añadirá la IP del host remoto a nuestra lista de host de confianza. Al añadirse, las siguientes veces que se intente establecer una conexión con el equipo remoto, este mensaje no saldrá porque la clave pública del host remoto ha sido añadida al anillo de confianza del equipo cliente.
- Si se contesta no, simplemente se cancela el intento de conexión.
Si la respuesta es yes, automáticamente se añade el host remoto al anillo de confianza y se muestra el siguiente mensaje:
Warning: Permanently added '192.168.1.90' to the list of knwon hosts.
A continuación se solicitará la password del usuario remoto con el cual se quiere realizar la conexión al servidor SSH, teniendo por defecto, tres intentos para introducir correctamente dicha password.
La realización o no de dicha pregunta es configurable a través del parámetro StrictHostKeyChecking del fichero de configuración del cliente SSH (/etc/ssh/ssh_config
). Este parámetro acepta tres posibles valores:
- yes
Cierra el intento de conexión si la clave pública del equipo remoto al que se intenta conectar no está en el anillo de confianza, es decir, no está entre los host conocidos (known_host). - no
Establece la conexión esté o no la clave pública del equipo remoto en el fichero de host conocidos. - ask
Pregunta si se quiere o no aceptar el intento de conexión sino está la clave pública del equipo remoto entre los host conocidos. Esta es la opción por defecto.
Relacionado con la autenticidad de los equipos remotos, SSH ofrece una herramienta muy interesante. Se trata de ssh-keygen
que permite verificar que la clave pública del otro extremo de la conexión es de quien dice ser. Para ello se usa el siguiente comando:
ssh-keygen -l -E funciónHash -f ficheroClavePública
siendo:
- fuciónHash
Función hash empleada en el fingerprint de la clave pública. - ficheroClavePública:
Ruta donde ha sido importada la clave pública del equipo remoto.
Reflexiona
Cuando un usuario lanza un comando remotamente sobre un servidor SSH, éste nos solicita la contraseña del usuario bajo el cual se ejecuta el comando. Este uso que a simple vista es idóneo para evitar que alguien pueda ejecutar comandos sin permiso, ¿sería apropiado si se quiere programar un script para que sea ejecutado de manera automática empleando, por ejemplo, el servicio cron?
Obra publicada con Licencia Creative Commons Reconocimiento Compartir igual 4.0