Como crear los “keys” para “ssh login” automático

Para los que bregamos con paginas web y desarrollo de aplicaciones basadas en tecnología web, el hacer ssh (remote login) a un servidor en el web es cosa de todos los días.Vía ssh tenemos control absoluto de esos servidores remotos y nos permite usar herramientas como SVN o Git para desplegar (deploy) nuestras aplicaciones o web sites.

El problema es que si uno esta conectando a varios servidores muchas veces al día y cada uno de estos tiene un password diferente, la cosa se vuelve complicada. Tengo una aplicación que me ayuda a recordar los passwords pero estoy cansado de copiar y pegar el mismo password 10 veces al día.

La solución a este problema es usar un ssh key. Cuando tienes un ssh key configurado no tienes que entrar el password cada vez que te conectas a un servidor que tiene tu “public key”. Para entender mejor un public key es como una cerradura en una puerta y el private key es la llave que lo abre. Puedes poner la misma cerradura a muchas puertas (servidores) y usar la misma llave para entrar a todas.

Para entender más fácilmente (suponiendo que sabes trabajar con ssh):

  • Tienes que crear un Public y un Private key
  • Debes guardar el private key como si tu vida dependiera de ello
  • Debes enviar el public key a todos los servidores o computadoras que te quires conectar

1. En tu computadora personal (Mac OS X / Linux) debes crear el Private y Public key. Esto es muy fácil, simplemente abre el terminal y entra:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Luego de entrado este comando te preguntará por un nombre para la pareja de “keys”. En este caso para dejar el nombre “default” solo presionamos enter en el tecalado. Esto produce tanto el Public (id_rsa) como el Private key (id_rsa.pub). Luego te preguntará por un “passphrase” para el que puedes poner lo que quieras, pero debes recordarlo. Los dos files (id_rsa y id_rsa.pub) se crearán en el directorio .ssh dentro del home folder.

2. Haz un backup de estos dos files. Son muy importantes y si alguien tiene acceso a ellos también tendrá acceso a todos los servidores o computadoras que usen esa pareja de llaves.

3. Ahora vamos a enviar el public key (id_rsa.pub) o la cerradura de la puerta al servidor donde queremos conectarnos. Para esto hay que usar scp que es un comando que funciona como cp (copy) pero permite hacer la copia a una computadora remota o de una computadora remota. Para usar scp necesitamos darle el nombre del file que queremos copiar (id_rsa.pub) luego el nombre de usuario nuestro en el servidor donde queremos enviar el file (usuario) luego (@), luego el domain del servidor, luego (:) y finalmente el directorio donde queremos guardar el file.

cd ~/.ssh
scp id_rsa.pub [email protected]:~/.ssh/

Una vez copiado el file al directorio ~/.ssh es necesario hacer login al servidor remoto via ssh para decirle que use este file cuando se este tratando de hacer un login desde nuestra computadora personal.

ssh [email protected]

Verifica que el directorio .ssh tiene permisos 700. Si no haces:

chmod 700 .ssh/
cd ~/.ssh

Ahora hay que crear un file para guardar los keys que este servidor acepta.

touch authorized_keys
chmod 600 authorized_keys

Ahora hay que poner nuestro Public key en este file.

cat id_rsa.pub >> authorized_keys

Listo ahora debemos volver a nuestra computadora personal. Si todo salió bien el servidor debería permitirte conectarte sin pedir ningún password mas allá del passphrase que usaste al principio para genera los keys. De este momento en adelante podrás conectarte al servidor remoto usando solamente:

ssh [email protected]

Espero que este pequeño tutorial ayude a alguien. Aquí les dejo el enlace al mejor articulo que encontré sobre el tema.