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.
- 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.
