sábado 21 de febrero de 2009

Acceso a máquinas remotas vía ssh sin contraseña

A veces, trabajando como administrador, resulta un poco tedioso tener que teclear la contraseña cada vez que nos conectamos a una máquina remota en la que tenemos que trabajar, más aún si tenemos muchos equipos que controlar.

Para conseguir conectarnos vía ssh a estas máquinas, sin que se nos pida la contraseña, podemos crear una clave pública y otra privada con ssh-keygen. Una vez creadas, no tendremos más que añadir la clave pública al fichero authorized_keys del usuario con el que nos conectamos a la máquina remota.

Veamos paso a paso cómo hacerlo:

Primero, generamos en nuestra máquina un par de claves (privada y pública) mediante ssh-keygen:

# ssh-keygen -t rsa

En el directorio .ssh de nuestro home se creará la clave privada (id_rsa) y la pública (id_rsa.pub). Por ejemplo, si mi usuario es adrian, la clave privada se encontrará almacenada en /home/adrian/.ssh/id_rsa y la clave pública en /home/adrian/.ssh/id_rsa.pub

ssh-keygen nos pedirá una frase de paso. La dejaremos en blanco para que no nos la pida al conectarnos al equipo remoto.

Una vez que hemos generado nuestra clave pública y privada, añadimos nuestra clave pública al fichero ~/.ssh/authorized_keys del usuario que va a tener acceso sin clave en la máquina remota.

Para hacerlo, primero copiamos el fichero id_rsa.pub al home del usuario remoto con el que queremos acceder sin contraseña. Por ejemplo:
# scp /home/adrian/.ssh/id_rsa.pub usuario@servidor:~/

Después nos conectamos a la máquina remota:
# ssh usuario@servidor

Y añadimos el contenido del fichero id_rsa.pub al fichero authorized_keys del usuario con el que accedemos en la máquina remota:
# cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

Y ya está. A partir de ahora, cada vez que nos conectemos a la máquina remota, tendremos acceso sin tener que teclear la password.

Por cierto, si tenemos muchas máquinas que administrar, podemos usar una máquina de pasarela.