SSH sin contraseña en Linux

Aprendemos a utilizar el servicio SSH sin contraseña en sistemas GNU/Linux. Para ello utilizaremos un par de comandos muy útiles. El primero nos permitirá generar una clave pública y privada para nuestro equipo, y con el otro comando copiaremos nuestra llave pública a otro host. Los pasos son realmente sencillos, como veréis más adelante.

SSH sin contraseña en GNU/Linux

En su día cuando me inicié en esto de la informática soñaba con ser el personaje de Wargames y conectarme a equipos remotos. De eso ha llovido mucho, de hecho, entonces no existía el Internet que conocemos actualmente.

En sistemas UNIX y similares, como GNU/Linux, tenemos disponible el servicio SSH. Disponible desde finales de los años 90 del siglo pasado. Sobre todo, la versión para OpenBSD, llamada OpenSSH.

En fin, que me voy por las ramas

Generar llave pública y privada

Para conectarnos a un servidor remoto vía SSH debemos generar dos llaves, una pública y otra privada. Podemos utilizar el siguiente símil: La clave pública sería el candado y la privada la llave. El candado se colocará en el servidor remoto al que se quiere acceder; cuando se intenta acceder se comprobará que la máquina que intentar conectar tiene la llave, esto es, la llave privada.

Para generar las llaves vamos a utilizar el comando ssh-keygen en nuestra máquina local. Le debemos especificar el tipo de clave queremos crear. Los valores posibles son: dsa, ecdsa, ed25519, rsa y rsa1. Para indicarlo debemos utilizar el parámetro “-t

Su uso:

  1. ssh-keygen -t rsa

El comando nos pedirá la ruta y el nombre del fichero que alojará las llaves. Por defecto, si no indicamos lo contrario, se guardará en la carpeta oculta “.ssh” del usuario en cuestión. Dicha carpeta deberá tener siempre permisos “700”, y el fichero con la llave privada “600”

Además, tenemos la posibilidad de asignar una contraseña a la llave privada. De esta manera si un tercero la consigue, lo tendrá más difícil para utilizarla.

Se crearán en la ubicación “.ssh” del usuario, dos ficheros:

  • id_rsa, con la clave privada.
  • id_rsa.pub, se trata de clave pública, que es la que tenemos que copiar en los servidores que nos queremos conectar.

Copiar la llave pública a un servidor remoto

Para conseguir el fin de copiar nuestra llave pública a un servidor remoto, para así poder conectar por SSH sin contraseña, lo podemos realizar de diferentes maneras. La más fácil es utilizar la herramienta ssh-copy-id, de la siguiente manera:

  1. ssh-copy-id davidochobits@tipsandlinux.com

Una vez hecho esto, el servidor remoto nos pedirá una única vez la contraseña del usuario que vamos a utilizar. Así ya tendremos la clave pública copiada. De esta manera ya podremos acceder vía SSH sin contraseña.

Esto nos puede ir muy bien para utilizar comandos como RSYNC o SCP, que se sirven de SSH.

¿Qué os parece? Con este tipo de tips ya estamos un poco más de cerca de emular a Elliot de Mr. Robot 🙂

Fuentes consultadas

Bicheando un poco por Internet me he encontrado con la web Voragine.net, que tiene un excelente artículo al respecto, por si lo queréis consultar también.