All Categories > Tutoriales > Crear llave publica para acceso sin clave

Configurar la autenticación con claves RSA paso a paso

Explicación paso a paso de cómo crear las claves SSH con un par de claves RSA, para acceder de forma segura a servidores virtuales.

1º.- Crear el par de claves RSA

El primer paso consiste en crear el par de claves RSA en la máquina cliente, que por lo general es el equipo que solemos utilizar. Para ello ejecutamos la siguiente instrucción en la línea de comandos:
$ ssh-keygen -t rsa

2º.- Almacenar las claves y la contraseña

Una vez hayamos ejecutado la instrucción para generar las claves, se nos pedirá que indiquemos en qué ruta queremos almacenar la clave:
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Nota: Si no escribimos nada y pulsamos la tecla «Intro», la clave se almacenará en la ruta que aparece entre paréntesis.

3º.- Generar una contraseña para la clave privada

Una vez indicada la ruta en la que se almacenará la clave, podemos incluir una contraseña:
Enter passphrase (empty for no passphrase):
Si no queremos usar una contraseña, podemos dejarlo en blanco como se indica entre paréntesis y pulsar «Intro». Sin embargo, es recomendable incluirla para añadir una capa de seguridad adicional. De este modo, aunque algún ciberdelincuente consiguiera la clave, no podrían hacer uso de ella mientras no diera con la contraseña. El único inconveniente de crear una contraseña es que habría que escribirla cada vez que se utilizara. Por supuesto, lo más recomendable es crear siempre contraseñas seguras.

Una vez finalizado este paso, si todo va bien, deberíamos ver en pantalla algo parecido a esto:

ssh-keygen -t rsa 
Generating public/private rsa key pair. 
Enter file in which to save the key (/home/demo/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/demo/.ssh/id_rsa. 
Your public key has been saved in /home/demo/.ssh/id_rsa.pub. 
The key fingerprint is: 
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 demo@xyz.local 
The key's randomart image is: 
 +--[ RSA 2048]----+
 |          .oo.   |
 |         .  o.E  |
 |        + .  o   |
 |     . = = .     |
 |      = S = .    |
 |     o + = +     |
 |      . o + o .  |
 |           . o   |
 |                 |
 +-----------------+
  • La clave pública se guardará en: /home/demo/.ssh/id_rsa.pub.
  • La clave privada se guardará en: /home/demo/.ssh/id_rsa.

4º.- Copiar la clave pública

Una vez hayamos generado las claves, es hora de colocar la clave pública en el servidor virtual donde la queremos utilizar.
Podemos copiar la clave pública dentro del fichero «autorized_keys» en el servidor virtual con la instrucción «ssh-copy-id».
Para que se copie correctamente hay que indicar la dirección IP de la máquina, como se indica a continuación:
ssh-copy-id user@123.45.67.89
Otra alternativa es pegar la clave utilizando SSH:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.67.89 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"
Independientemente del comando que utilicemos, deberíamos ver algo parecido a esto:
The authenticity of host '12.34.56.78 (12.34.56.78)' can't be established. 
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '12.34.56.78' (RSA) to the list of known hosts.
user@12.34.56.78's password:
Now try logging into the machine, with "ssh 'user@12.34.56.78'", and check in:
   ~/.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

5º.- Desactivar el acceso para el usuario root (OPCIONAL)

Este último paso es opcional y sirve para mejorar aún más la seguridad. Una vez hayamos copiado las claves SSH en el servidor y nos hayamos cerciorado de que podemos acceder, podemos restringir el acceso vía SSH al usuario root. Esto permite el acceso únicamente mediante las claves SSH que hemos generado. Para hacer esto tenemos que abrir el archivo de configuración de SSH:
sudo nano /etc/ssh/sshd_config
Dentro de este archivo buscamos la línea donde aparezca «PermitRootLogin» y la modificamos para asegurarnos de que solo se pueda acceder usando las claves SSH:
PermitRootLogin without-password
Por último, recargamos SSH para que se efectúen los cambios:
reload ssh
Una vez completados todos los pasos, dispondremos de una máquina virtual más segura y solo podremos acceder a ella si disponemos de las claves SSH generadas. Asimismo, para más seguridad, antes de cerrar la sesión SSH, deberíamos probar la conexión desde otro terminal para verificar que funciona correctamente.



 Last updated Fri, May 28 2021 2:46pm
Please Wait!

Please wait... it will take a second!