martes, 6 de octubre de 2009

Acceso por ssh sin contraseña

En ocasiones es muy útil permitir el acceso por ssh desde un equipo a otro sin que pida la contraseña. Por ejemplo, un script que se ejecuta en una máquina cliente y que necesita ejecutar un comando en una máquina servidor. Este proceso automático no podría introducir la contraseña cuando ésta sea pedida.

La forma de configurar una máquina servidor para que no pida contraseña cuando se acceda desde una máquina cliente específica es la siguiente:

1. En la máquina cliente, logarnos con el usuario que accederá a la máquina servidor. Comprobar si existe el fichero ~/.ssh/id_rsa.pub.

2. Si el fichero anterior no existe, ejecutar el comando:

$ ssh-keygen -t rsa

y pulsar enter a todas las preguntas que se nos hagan. Con esto, habremos creado la clave pública y privada (los ficheros ~/.ssh/id_rsa.pub y ~/.ssh/id_rsa respectivamente).

3. Copiar la llave pública al directorio home del usuario@maquina servidor (la que será accedida sin contraseña):

$ scp ~/.ssh/id_rsa.pub usuario@maquina:/home/usuario/

4. En la máquina servidor, y logados con el usuario al que accederemos sin contraseña, ejecutaremos:

$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
$ rm ~/id_rsa.pub

En este momento ya podremos logarnos por ssh sin contraseña desde la máquina cliente con el usuario con que generamos la clave pública/privada a la máquina servidor con el usuario que configuramos para ello.