Cómo configurar claves SSH

Sobre las claves SSH

Secure Shell (más conocido como SSH) es un protocolo de red de cifrado que permite a los usuarios realizar de forma segura una serie de servicios de red en una red no segura. Las claves SSH proporcionan una forma más segura de iniciar sesión en un servidor con SSH que usar solo una contraseña. Si bien una contraseña se puede descifrar con un ataque de fuerza bruta, las claves SSH son casi imposibles de descifrar solo con la fuerza bruta.

La generación de un par de claves te proporciona dos cadenas largas de caracteres: una pública y una clave privada. Puedes colocar la clave pública en cualquier servidor y luego desbloquearla conectándote a ella con un cliente que ya tenga la clave privada. Cuando los dos coinciden, el sistema se desbloquea sin necesidad de una contraseña. Puedes aumentar la seguridad aún más protegiendo la clave privada con una frase de contraseña.

Dentro de algunos de los comandos que se encuentran en este tutorial, notará algunos valores resaltados. Estas son variables, y debes sustituirlas por tus propios valores

Paso uno: crear el par de claves RSA

El primer paso es crear el par de claves en la máquina cliente (es muy probable que solo sea tu computadora):

Paso dos: almacenar las claves y la contraseña

Una vez que hayas ingresado el comando Gen Key, verás algunas preguntas más: Enter file in which to save the key (/home/demo/.ssh/id_rsa):

$ ssh-keygen -t rsa

Puedes presionar Enter aquí, guardando el archivo en la página de inicio del usuario (en este caso, mi ejemplo de usuario se llama demo).

Enter passphrase (empty for no passphrase):

Depende de ti si deseas utilizar una frase de contraseña. La introducción de una frase de contraseña tiene sus beneficios: la seguridad de una clave, sin importar qué tan cifrada esté, aún depende del hecho de que no sea visible para nadie más. En caso de que una clave privada protegida por contraseña esté en posesión de usuarios no autorizados, no podrán iniciar sesión en sus cuentas asociadas hasta que descubran la frase de contraseña, lo que le dará al usuario hackeado un tiempo extra. El único inconveniente, por supuesto, de tener una frase de contraseña, es tener que escribirla cada vez que se usa el par de claves.

Todo el proceso de generación de claves se ve así:

$ ssh-keygen -t rsa
Output
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@a
The key's randomart image is:
+--[ RSA 2048]----+
|          .oo.   |
|         .  o.E  |
|        + .  o   |
|     . = = .     |
|      = S = .    |
|     o + = +     |
|      . o + o .  |
|           . o   |
|                 |
+-----------------+

La clave pública ahora se encuentra en /home/demo/.ssh/id_rsa.pub. La clave privada (identificación) ahora se encuentra localizada en /home/demo/.ssh/id_rsa.

Paso tres: copiar la clave pública

Una vez que se genera el par de claves, es hora de colocar la clave pública en el servidor que queremos usar.

Puedes copiar la clave pública en el archivo authorized_keys de la nueva máquina con el comando ssh-copy-id. Asegúrate de reemplazar el nombre de usuario de ejemplo y la dirección IP a continuación.

$ ssh-copy-id [email protected]

Nota: Si eres un usuario de Mac, ssh-copy-id no está instalado en tu máquina. Sin embargo, puedes, instalarlo usando Homebrew.

$ brew install ssh-copy-id

Alternativamente, puedes pegar las claves usando SSH:

$ cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> 
~/.ssh/authorized_keys"

No importa el comando que elijas, puedes ver algo como lo siguiente:

The authenticity of host '198.51.100.0 (198.51.100.0)' 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 '198.51.100.0' (RSA) to the list of known hosts.
[email protected]'s password:

Este mensaje nos ayuda a asegurarnos de que no hayamos agregado las claves adicionales que no esperabas.

Ahora puedes seguir adelante e iniciar sesión en tu perfil de usuario y no se te pedirá una contraseña. Sin embargo, si configuras una contraseña al crear tu clave SSH, se te pedirá que ingreses la contraseña en ese momento (y cada vez que inicies sesión en el futuro).

Paso cuatro opcional: deshabilitar la contraseña para el inicio de sesión root

Una vez que hayas copiado las claves SSH en tu servidor y te hayas asegurado de que puedas iniciar sesión solo con las claves SSH, puedes continuar y restringir el inicio de sesión de root para que solo se permita a través de las claves SSH.

Para hacer esto, abre el archivo de configuración SSH:

$ sudo nano /etc/ssh/sshd_config

Dentro de ese archivo, tienes que encontrar la línea que incluye PermitRootLogin y modifícalo para asegurarte de que los usuarios solo puedan conectarse con tu clave SSH:

/etc/ssh/sshd_config
PermitRootLogin without-password

Guarda y cierra el archivo cuando hayas terminado.

Para poner en práctica estos cambios debes usar el siguiente comando:

$ sudo systemctl reload sshd.service