Acceso SSH sin contraseña

Cuando trabajamos con ssh y nos conectamos en repetidas ocasiones al servidor, puede resultar tedioso escribir la contraseña de acceso cada vez que lo hacemos.

En este artículo vamos a explicar cómo permitir el login sin petición de contraseña desde un host determinado, de modo que siempre que nos encontremos en esa máquina y pretendamos acceder al servidor ssh desde ésta, el sistema no nos pregunte por la contraseña y nos brinde acceso automático.

Nos vamos a basar en la instalación de raspbian realizada en el artículo anterior, aunque se puede extrapolar a otras distribuciones de linux. La máquina cliente de ejemplo es también linux.

Crear claves SSH con ssh-keygen en la máquina cliente

Para comenzar, debemos crear en nuestra máquina cliente las claves SSH que permitan la conexión segura. El mecanismo mediante el cual funciona el login sin contraseña se basa en que en servidor almacenará nuestra clave pública como una clave “conocida” por lo que permitirá el acceso desde nuestra máquina una vez verificada esa clave.

Para generar las claves, si nunca las has generado en tu máquina cliente, es tan simple como ejecutar el siguiente comando:

ssh-keygen

Pulsaremos intro en cada una de las preguntas que nos hace el asistente, de modo que la salida que veremos será similar a la siguiente:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_rsa): 
Created directory '/home/usuario/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/usuario/.ssh/id_rsa.
Your public key has been saved in /home/usuario/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:BwMw8jMWdXZdUenr6+YciJOZHeaVN9AQCg8DU2g7iBU usuario@00c7e14b3122
The key's randomart image is:
+---[RSA 2048]----+
|  . +E+o*=.. ++oo|
|   o + *..= o o. |
|    B o +  o ... |
|   o + o o    ...|
|        S .  o +o|
|         .  O +.o|
|           * +.. |
|            . .o.|
|              +=.|
+----[SHA256]-----+

Copiar clave pública SSH en el servidor

Para copiar la clave pública en el servidor de modo que cuando queramos acceder se nos reconozca como “cliente de confianza”, simplemente debemos utilizar el siguiente comando:

ssh-copy-id pi@192.168.0.222

El comando mostrado va acompañado del nombre de usuario pi y de la ip estática que usamos en el artículo anterior. Nos obstante en caso de referirnos a un nombre de host en lugar de una ip, podríamos hacerlo con pi@nombrehostremoto.

El sistema nos pedirá la contraseña del servidor ssh al que pretendemos copiar la clave pública y finalizará el proceso. Ahora sólo falta probar.

Conectar por SSH sin contraseña

Llega el momento de conectarnos sin que se nos pida la contraseña, para ello simplemente procederemos como siempre:

ssh pi@192.168.0.222

Tras ejecutar esto, y si todo ha ido correctamente, accederemos por ssh sin que se nos solicite introducir la contraseña.

Y esto es todo! Nos vemos en el próximo artículo!