Configurar Llaves SSH (ssh keys) en Linux

julio-barnils-ssh_keys

Que son las llaves SSH?

Utilizar llaves SSH nos permite loguearnos de una manera mas segura a nuestros servidores al evitar utilizar únicamente una contraseña. A diferencia de las contraseña que pueden ser eventualmente vulneradas mediante un ataque de fuerza bruta, las llaves SSH son prácticamente imposibles de descifrar con estos ataques.

Al generar un par de llaves tenemos como resultado dos cadenas de caracteres bastante largas, una sera nuestra llave publica y la otra nuestra llave privada. Dejaremos nuestra llave publica en nuestros servidores y luego al conectarnos desbloquearemos el acceso utilizando nuestra llave privada. Podemos sumar un nivel extra de seguridad agregando una contraseña a nuestras llaves privadas.

Paso 1: Generar nuestro par de llaves

Desde nuestra computadora correremos el siguiente comando en una terminal:

ssh-keygen -t rsa

Paso 2: Almacenar nuestras llaves y contraseñas

Cuando hayamos corrido el comando keygen nos pedirá algunos datos extra.

Lo primero que nos pregunta es donde guardar las llaves, si presionamos la tecla enter las guardara en nuestro directorio home, caso contrario podemos ingresar la ruta a mano.

A continuación nos solicitara si queremos ingresar una contraseña, si no queremos utilizar esta contraseña simplemente presionaremos la tecla enter. Es recomendable utilizar una contraseña de manera de aumentar el nivel de seguridad de nuestras llaves.

El proceso entero se ve algo así:

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

Nuestra llave publica se encontrara en /home/usuario/.ssh/id_rsa.pub y la praivada en  /home/usuario/.ssh/id_rsa

Paso 3: Copiando la llave publica

Una vez que generamos nuestro par de llaves, debemos enviar la llave publica a nuestro servidor. Para esto usaremos el comando:

ssh-copy-id nombre-de-usuario@ip-del-servidor

Una vez ejecutado el comando veremos lo siguiente:

The authenticity of host 'ip-del-servidor (ip-del-servidor)' 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 'ip-del-servidor' (RSA) to the list of known hosts.
nombre-de-usuario@ip-del-servidor's password:
Now try logging into the machine, with "ssh 'nombre-de-usuario@ip-del-servidor'", and check in:

~/.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Todo listo! ya podemos conectarnos al servidor sin utilizar una contraseña (si es que no configuramos una para la llave).

Paso 4: Deshabilitar el acceso con contraseña

Una vez que copiamos nuestras llaves al servidor, es importante no permitir el login con contraseña, para esto editaremos el archivo de configuracion de SSH:

sudo nano /etc/ssh/sshd_config

Dentro del archivo buscaremos la linea que dice «PermiteRootLogin» y la modificaremos dejándola de la siguiente manera:

PermitRootLogin without-password

Para finalizar reiniciaremos el servicio de SSH:

reload ssh

Julio Barnils

Deja una respuesta