Generación de claves dsa/rsa para habilitar ssh sin password

Hola compañeros de la shell, en esta entrada vamos a describir cómo generar claves ssh dsa/rsa en un host y cómo habilitar conexiones ssh sin password.

La idea es generar la clave rsa/dsa para que pueda ser utilizada para conectar contra otro host sin necesidad de introducir password.

  1. El comando para generar la clave ssh es:
ssh-keygen

Por defecto, el comando ssh-keygen genera el par de claves público/privado rsa. Si quisieramos utilizar el algoritmo dsa, ejecutaríamos:

ssh-keygen -t dsa

A continuación, a modo de ejemplo, la ejecución completa de ssh-keygen:

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/PATH_HOME/.ssh/id_rsa): 
/home/PATH_HOME/.ssh/id_rsa already exists.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/PATH_HOME/.ssh/id_rsa.
Your public key has been saved in /home/PATH_HOME/.ssh/id_rsa.pub.
The key fingerprint is:
ed:2d:05:22:35:b1:9e:37:20:fb:9d:46:38:00:7e:3e USER@HOSTNAME
The key's randomart image is:
+--[ RSA 2048]----+
|    .   +.       |
|   . . . o       |
|    . = + .      |
|     o * * .     |
|      E S = .    |
|       o * =     |
|        . * .    |
|         . .     |
|                 |
+-----------------+

Pulsando Enter a las preguntas solicitadas al usuario se generará el par de claves que por defecto ubicará los ficheros generados en el directorio $HOME/.ssh

2. Una vez generadas las claves, para poder conectar contra nuestra máquina destino sin necesidad de password copiaremos la clave pública en el host destino, es decir:

Copiaremos el contenido del fichero $HOME/.ssh/id_rsa.pub del host origen(que contiene la clave pública generada previamente) y lo pegaremos al final del fichero $HOME/.ssh/authorized_keys del host destino.

Copiamos:

$ cat $HOME/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDI8nJSVrevZIBh9Nnze0DV8ntmIt+A2HLVnSQ0WoMW3UlpgTHx1awR4k+I8YJwCvqOW61NwSjFQUEW7/5MrTfLdFCQkKRwR3Nv8fFqa2pKkM36lAkk/H9nZ6v3MrFiDKmx27U1GsB7JnrqnoIHpu2sM+QyKN5Gn3GW+7DnrXt7Ck3IdpTQrTfxAHsu8F/XXThFvpJIbVUb2xtHtKgJONUgiCSCC9KsOUzeXjvTGrjwv9O0QQtt0ZlYdLSu2aNA6ZUYa0HWNyUnAja7b9XunHVRyzec/USSEgDx4Di/sJz9wfVOMX+X0SBeXQ+ITh+m6UNobCIWZmFqOBKrymMg10fp USUARIO@HOST_NAME

Pegamos en el host destino (por ejemplo editando el fichero con vi):

vi $HOME/.ssh/authorized_keys

3. Para finalizar, comprobamos en el host destino los permisos necesarios para que la conectividad mediante ssh sin password funcione correctamente:

chmod 750 $HOME
chmod 700 $HOME/.ssh
chmod 600 $HOME/.ssh/authorized_keys

P.D.: Un apunte que guarda relación con este tema. Muchas veces se habilita el ssh sin password entre hosts a los que accedemos para facilitar la ejecución de scripts. Una buena práctica sería usar ssh en dichos scripts añadiendo la opción  -o «StrictHostKeyChecking no» para evitar la pregunta yes/no la primera vez que conectamos sin password con el host destino:

ssh -o "StrictHostKeyChecking no" user@host

P.D.2. Si fuera necesario generar un par de claves sin password en un script:

echo y | ssh-keygen -t rsa -f $HOME/.ssh/id_rsa -q -N ''

Espero que os sirva de ayuda.

Nos vemos al otro lado de la pantalla negra.

Publicado en Sin categoría | Deja un comentario