Acerca de las claves SSH
Secure Shell (mejor conocido como SSH) es un protocolo de red criptográfica que permite a los usuarios realizar de forma segura una serie de servicios de red a través de una red no segura. Las claves SSH proporcionan una forma más segura de iniciar sesión en un servidor con SSH que utilizando una contraseña sola. Si bien una contraseña se puede descifrar con un ataque de fuerza bruta, las claves SSH son casi imposibles de descifrar solo por la fuerza bruta.
Generar un par de claves le proporciona dos largas cadenas de caracteres: una clave pública y una clave privada. Puede colocar la clave pública en cualquier servidor y luego desbloquearla conectándose con un cliente que ya tenga la clave privada. Cuando los dos coinciden, el sistema se desbloquea sin necesidad de una contraseña. Puede 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 debe sustituirlas con sus propios valores.
Paso uno: cree el par de claves RSA
El primer paso es crear el par de claves en la máquina del cliente:
$ ssh-keygen -t rsa
Paso dos: almacene las claves y la frase de contraseña
Una vez que haya ingresado el comando Gen Key, recibirá algunas preguntas más:
Enter file in which to save the key (/home/demo/.ssh/id_rsa):
Puede presionar enter aquí, guardando el archivo en el home del usuario (en este caso, mi usuario de ejemplo se llama demo).
Enter passphrase (empty for no passphrase):
Depende de usted si desea utilizar una frase de contraseña. Ingresar una frase de contraseña tiene sus beneficios: la seguridad de una clave, sin importar cuán encriptada, todavía depende del hecho de que nadie más la puede ver. En caso de que una clave privada protegida con frase de contraseña caiga 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, comprándole al usuario pirateado un tiempo extra. El único inconveniente, por supuesto, de tener una frase de contraseña, es tener que escribirla cada vez que use 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 en
/home/demo/.ssh/id_rsa
Paso tres: copie 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.
Puede copiar la clave pública en el archivo autorizado de claves de la nueva máquina con el comando ssh-copy-id. Asegúrese de reemplazar el nombre de usuario y la dirección IP de ejemplo a continuación.
ssh-copy-id demo@198.51.100.0
Nota: Si es usuario de Mac, ssh-copy-id no se instalará en su máquina.
Sin embargo, puede instalarlo usando Homebrew :
brew install ssh-copy-id
Alternativamente, puede pegar las claves usando SSH:
cat ~/.ssh/id_rsa.pub | ssh demo@198.51.100.0 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys"
No importa qué comando elija, puede ver algo como:
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. user@198.51.100.0's password:
Este mensaje nos ayuda a asegurarnos de que no hayamos agregado alguna claves adicional que no esperabamos.
Ahora puede continuar e iniciar sesión en su perfil de usuario y no se le solicitará una contraseña. Sin embargo, si configura una frase de contraseña al crear su clave SSH, se le pedirá que ingrese la frase de contraseña en ese momento (y cada vez que inicie sesión en el futuro).
Paso cuatro opcional: deshabilite la contraseña para el inicio Root
Una vez que haya copiado sus claves SSH en su servidor y se haya asegurado de que puede iniciar sesión solo con las claves SSH , puede continuar y restringir el inicio de sesión raíz para que solo se permita a través de claves SSH.
Para hacer esto, abra el archivo de configuración SSH:
$ sudo nano /etc/ssh/sshd_config
Dentro de ese archivo, busque la línea que lo incluye PermitRootLogin
y modifíquelo para asegurarse de que los usuarios solo puedan conectarse con su clave SSH:
PermitRootLogin without-password
Guarde y cierre el archivo cuando haya terminado.
Para poner en práctica estos cambios:
$ sudo systemctl reload sshd.service