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