jueves, 8 de julio de 2010

Cómo configurar SSH para realizar conexiones sin contraseña

Ahora sí, al grano...

Utilizar SSH para conectarse a máquinas de forma remota es muy común. Luego, hay momentos en los que desearíamos obviar el ingreso de contraseña, bien sea porque no deseamos divulgarla o simplemente porque nos fastidia tener que colocarla constantemente.

Para que una máquina pueda conectarse a otra vía SSH, sin la necesidad de colocar una contraseña, se asume que ambas mantienen una relación de confianza, en este caso unidireccional, es decir, que "A" confíe en "B", no implica necesariamente que "B" confíe en "A".

Ya en el artículo anterior, Cómo funciona SSH, explicamos algo de SSH, podría considerar este artículo como su continuación...

Supongamos que "A" desea conectarse a "B" vía SSH sin necesidad de ingresar su contraseña, o, y realmente prefiero esta explicación, "B" considera que "A" mantiene una relación de confianza con él, por lo que le permitirá iniciar una sesión para un usuario específico sin la necesidad de autenticarse explicitamente.

Lo que debe hacer "A" es generar un par de claves (pública y privada) y enviarle su clave pública a "B", para que esta la almacene en su base de datos de máquinas confiables. Luego, cuando "A" inicie sesión -para el usuario que hayan acordado- "B" le concederá el permiso sin la petición explícita de una contraseña.

Pongámonos técnicos...

Para generar la clave:


rodolfo@rcampos-laptop:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/rodolfo/.ssh/id_rsa): ENTER
Enter passphrase (empty for no passphrase): ENTER
Enter same passphrase again: ENTER
Your identification has been saved in /home/rodolfo/.ssh/id_rsa.
Your public key has been saved in /home/rodolfo/.ssh/id_rsa.pub.
The key fingerprint is:
9d:0f:4e:8c:b5:bb:f4:c3:ec:e3:79:8b:59:0b:1a:d1 rodolfo@rcampos-laptop
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| . |
| = + |
| S O E |
| o = |
| =oo . |
| . ==*.. |
| ooB+o. |
+-----------------+
rodolfo@rcampos-laptop:~$


Ahora tenemos la clave pública en la carpeta .ssh ubicada en nuestro $HOME (/home/rodolfo/.ssh/id_rsa.pub), sólo nos resta enviarla al host remoto y que en este se agregue al archivo authorized_keys dentro del directorio .ssh ubicado en el $HOME del usuario seleccionado. Por ejemplo:


rodolfo@rcampos-laptop:~$ scp /home/rodolfo/.ssh/id_rsa.pub a@myhost.com:~/.ssh
a@myhost.com's password:
id_rsa.pub 100% 404 0.4KB/s 00:00
rodolfo@rcampos-laptop:~$ ssh a@myhost.com "cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys"
a@myhost.com's password:
rodolfo@rcampos-laptop:~$ ssh a@myhost.com
Last login: Mon Jul 5 06:45:40 2010
a@myhost.com [~]#

2 comentarios: