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.

Esta entrada fue publicada en Sin categoría. Guarda el enlace permanente.

Deja una respuesta

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