Te hemos mostrado cómo usar SSH para transferir archivos de forma segura. Pero hay un problema importante con el comportamiento por defecto de SSH. Sólo te conectas con la máquina remota después de haber introducido manualmente la contraseña, lo que lo descarta para cualquier tarea que quieras ejecutar sin supervisión. ¿O no?

A continuación te explicamos cómo funcionan las herramientas CLI de OpenSSH (scp y sftp) para que puedas apreciar mejor el problema. Cuando quieras copiar archivos hacia o desde el host remoto, puedes usar scp que automáticamente inicia una conexión SSH con el host remoto. Cada vez que se ejecuta un comando scp se establece una nueva conexión con el remoto. Así que si tienes varios comandos scp estarías introduciendo la misma contraseña varias veces.

Esta es la razón por la que no querrías usar scp en ningún script que quieras ejecutar sin supervisión. También está el hecho de que si tienes múltiples cuentas en varias máquinas en la red, tendrías problemas para memorizar contraseñas únicas y fuertes para cada una.

Para superar este problema, necesitas cambiar el mecanismo de autenticación por defecto de OpenSSH a un sistema basado en claves.

La clave del éxito

Por defecto, OpenSSH sólo utiliza claves para autenticar la identidad de un servidor la primera vez que un cliente se encuentra con una nueva máquina remota:

$ ssh [email protected] No se puede establecer la autenticidad del host 'atlantis.remote.com (atlantis.remote.com)'. La huella de la clave ECDSA es da:e8:a2:77:f4:e5:10:56:6d:d4:d2:dc:15:8e:91:22. ¿Está seguro de que quiere seguir conectándose (sí/no)?

Cuando respondes escribiendo «sí», el host remoto se añade a la lista de hosts conocidos. Así, además de que el servidor autentifica al cliente pidiéndole una contraseña, el cliente también autentifica al servidor utilizando una clave.

RELACIONADO:  Apple proporciona una lista de los países que han realizado más solicitudes de eliminación de aplicaciones

Del mismo modo, tú también puedes conseguir un conjunto de claves para probar tu identidad. OpenSSH utiliza un par de claves para probar tu identidad y crear una conexión segura con un servidor remoto. La clave privada es sólo para ti y la utiliza tu cliente OpenSSH para demostrar tu identidad a los servidores. Luego está la clave pública, que se supone que debes mantener bajo todas tus cuentas en todas las máquinas remotas a las que quieras acceder por SSH.

Para crear una clave, en tu cliente introduce

$ ssh-keygenGenerating public/private rsa key pair.Enter fileinwhich to save the key (/home/bodhi/.ssh/id_rsa): Introduzca la frase de contraseña (vacía si no hay frase de contraseña): Introduzca de nuevo la misma frase de contraseña: Su identificación se ha guardado en/home/bodhi/.ssh/id_rsa.Su clave pública se ha guardado en/home/bodhi/.ssh/id_rsa.pub.

Recuerda no dejar la frase de paso vacía y anota la ubicación donde se guardan las claves. El archivo «id_rsa» sólo puede ser leído por tu cuenta, y su contenido está encriptado con la frase de contraseña que proporcionaste durante la generación.

El siguiente paso es copiar la clave pública en el servidor remoto. Asumiendo que deseas entrar con el usuario «admin» en la máquina remota llamada «atlantis.remote.com», puedes mover las claves con un solo comando:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]@atlantis.remote.com's password:

Después de haber proporcionado la frase de contraseña para su clave privada, la clave pública se colocará automáticamente en la ubicación correcta en el servidor remoto, que por defecto es el archivo «~/.ssh/authorized_keys».

Cuando ahora te conectes por ssh a la máquina remota, se te pedirá tu frase de contraseña. La única ventaja de usar claves es que en lugar de autenticarte con una contraseña que se transmite sin cifrar, el servidor remoto y tu cliente establecen tu identidad basándose en las claves.

RELACIONADO:  Maneja tus discos duros fácilmente en Mac con iBoySoft Drive Manager

Además, ahora puedes conectarte a varios equipos remotos utilizando la misma frase de contraseña, siempre y cuando estos equipos remotos tengan tu clave pública. Así que no tienes que recordar múltiples contraseñas.

Pero todavía no puedes ejecutar scripts sin que te interrumpan por la frase de contraseña.

Relacionado: Cómo habilitar la autenticación de dos factores para la conexión SSH

SSH-agent al rescate

OpenSSH incluye una herramienta llamada ssh-agent, que mantiene sus claves privadas en la memoria.

Una vez que el agente se está ejecutando, en lugar de pedirte la contraseña, los clientes SSH interactuarán con el agente.

Puedes iniciar el agente con «ssh-agent /bin/bash», asumiendo que estás usando el shell bash.

Cualquier comando que requiera acceso a tus claves privadas de OpenSSH será interceptado y respondido por el agente.

Cuando el agente se ejecuta, necesitas equiparlo con tus claves. Esto se hace invocando el programa «ssh-add» que por defecto carga las claves desde el archivo de identidad por defecto (~/.ssh/id_rsa).

$ ssh-add Introduzca la frase de contraseña para/home/bodhi/.ssh/id_rsa: Identidad añadida: /home/bodhi/.ssh/id_rsa (/home/bodhi/.ssh/id_rsa)

Ahora, cuando inicie sesión en el ordenador remoto con «ssh [email protected]», ¡se le permitirá sin necesidad de introducir la frase de contraseña!

Del mismo modo, scp y sftp también podrán conectarse a los hosts remotos sin pedirte nunca una frase de contraseña. Así que ahora puedes programar y ejecutar scripts que manipulen archivos en una máquina remota automáticamente.

Además, ahora que estás usando llaves, es una buena idea deshabilitar la autenticación mediante contraseñas. Para hacer esto, edita el archivo de configuración del servidor remoto (/etc/ssh/.sshd_config) y cambia el parámetro «PasswordAuthentication» de «yes» a «no». A partir de ahora, si alguien intenta conectarse a tu servicio SSH que no tenga una clave pública en el servidor, se le denegará el acceso sin siquiera ver el prompt de login.

RELACIONADO:  Cómo transmitir Amazon Prime en Chromecast

Crédito de la imagen: Karunakar Rayker