Cómo configurar SSH para acceder a otros equipos sin introducir contraseñas

SSH es un protocolo muy utilizado para el acceso a máquinas remotas UNIX. Si se utiliza ocasionalmente, basta con introducir el usuario y la contraseña para acceder:

ssh usuario_remoto@url_del_equipo_remoto

ssh con credenciales

ssh con credenciales

Sin embargo, si se accede muy a menudo a un equipo remoto estar introduciendo la clave puede ser engorroso. Para evitarlo, es posible habilitar el acceso mediante criptografía asimétrica. Los pasos necesarios son:

  1. Generar clave pública y privada con el usuario de la máquina desde la que se va a acceder a la máquina remota
  2. Exportar la clave pública a la máquina remota a la que se desea acceder

En este caso se está accediendo desde una máquina con Ubuntu 12.04 a un servidor con Ubuntu server 12.04. Para evitar confusiones, voy a utilizar los siguientes alias:

  • equipo_local: equipo desde el que se está intentando acceder, es decir, equipo origen.
  • equipo_remoto: equipo al que se está intentando acceder, es decir, equipo destino.
  • usuario_local: usuario con el que se está logueado en el equipo local.
  • usuario_remoto: usuario con el que hay que loguearse en el equipo remoto

Generar las claves

[en el equipo_local]ssh-keygen

Esta instrucción crea las claves pública y privada, preguntando si se desea proteger la clave privada con un passphrase. Dado que se quiere evitar introducir contraseñas al acceder al equipo remoto, es conveniente dejarlo en blanco. Tras finalizar, se generarán dos archivos en /home/USUARIO/.ssh/id_rsa y /home/USUARIO/.ssh/id_rsa.pub.

Exportar la clave pública al equipo remoto

Para exportar la clave pública, hay que añadir el fichero id_rsa.pub al fichero [equipo_remoto] /home/usuario_remoto/.ssh/authorized_keys. Los pasos son bastante engorrosos, pero afortunadamente hay un script que los automatiza:

[en el equipo_local]ssh-copy-id -i ~/.ssh/id_rsa.pub usuario_remoto@url_equipo_remoto

De este modo, el usuario remoto de la máquina remota ya tiene la clave pública del usuario local. Esto permite al usuario local acceder al equipo remoto sin necesidad de introducir contraseña:

ssh con clave privada

ssh con clave privada

Las partes resaltadas en rojo corresponden al usuario local y las partes resaltadas en azul corresponden al usuario y equipo remoto.

Si se desea acceder a otros equipos remotos, no es necesario generar nuevas claves. Basta con importar la clave pública en cada uno de los equipos remotos con el script ssh-copy-id.

Nota importante: seguridad de las claves

Como norma general, una clave privada debe estar protegida por contraseña, para evitar que un usuario que tenga acceso al fichero que la almacena pueda utilizarla. En este caso se ha optado por no protegerla para facilitar el acceso al equipo remoto, pero se debe tener claro que esto representa un posible agujero de seguridad. Es necesario asegurar que nadie puede acceder al directorio del equipo local en el que se almacena la clave privada, ya que de otro modo podrían acceder a las máquinas remotas en nuestro nombre.

Acceso desde putty

Si se quiere acceder a un equipo unix desde un equipo Windows, los pasos anteriores se pueden replicar fácilmente en putty. Para más información pinchar en el enlace.

Referencias y recursos

Publicado en tutoriales Etiquetado con: , , , , ,
Un comentario en “Cómo configurar SSH para acceder a otros equipos sin introducir contraseñas
  1. Cristina dice:

    Muchísimas Gracias!!
    Me ha servido de mucho!
    Un saludo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*