Uno de los primeros pasos, si no el más importante, al publicar un SSH a la red es desactivar el acceso mediante root y contraseña, aunque no existe la seguridad garantizada, esto nos puede ayudar a no ser susceptibles de un ataque por fuerza bruta para establecer una conexión con nuestro SSH.
Esto va a ser un pequeño tutorial para configurar el acceso a un servidor SSH unicamente con una llave pública, asignando a el una llave privada RSA.
En primer lugar, debemos generar una llave RSA, desde Linux, con el comando ssh-keygen -t rsa
joan@earth:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/joan/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ssh-servidor.
Your public key has been saved in ssh-servidor.pub.
The key fingerprint is:
SHA256:FGWEryQy2B9V539BdKy80AFNxO/+Cp8sMW9IaKzllp0 joan@earth
The key's randomart image is:
+---[RSA 2048]----+
| .== o*++.|
| oo o = o|
| o ... .o = |
| . + o.. . ..+ o|
| + +So . ..o.|
| . . = + ...|
| = +.* . |
| . + E+o..|
| . o=.o|
+----[SHA256]-----+
Esto nos genera una llave privada (id_rsa) y otra pública (id_rsa.pub) en el directorio /home/USUARIO/.ssh/
Ahora debemos subir nuestra llave pública al servidor, con el comando ssh-copy-id
joan@earth:~$ ssh-copy-id root@12.34.56.78
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@12.34.56.78's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@12.34.56.78'"
and check to make sure that only the key(s) you wanted were added.
Desde este momento ya podemos acceder a nuestro servidor usando la llave pública.
joan@earth:~$ ssh root@12.34.56.78
Last login: Fri Feb 1 09:23:38 2019 from 87.65.43.21
[root@servidor ~]#
Aunque aún se puede acceder mediante la contraseña, por lo que debemos desactivar la posibilidad de autenticación en el SSH mediante contraseña, para ello tenemos que editar el fichero /etc/ssh/sshd_config
Reemplazar en el fichero /etc/ssh/sshd_config
PasswordAuthentication yes
Por:
PasswordAuthentication no
Por último reiniciamos el servidor SSH para que este cambio surja efecto:
sudo systemctl reload sshd.service
Se recomienda desactivar el acceso root al SSH y hacerlo accesible solo para un usuario sin privilegios y que pertenezca al grupo de sudoers.
juan carlos dice
Hola,
Una aclaracion , ssh-copy-id copia la clave publica en .authorized_keys. La clave privada no puede salir de tu ordenador.
Saludos.
Joan dice
Hola Juan, he revisado lo que me comentas en mi guía por si hubiese algún error y no encuentro en que punto se manda la clave privada, con ssh-copy-id se envía solo la clave pública a la maquina destino: https://www.ssh.com/ssh/copy-id#sec-Copy-the-key-to-a-server Saludos.
tulechero dice
Indicas esto:
Ahora debemos subir nuestra llave privada al servidor, con el comando ssh-copy-id
Lo que sube como indica Juan, es la public.
Joan dice
¡Vaya, no me di cuenta del error! En el texto puse «subir llave privada» y en el lab, subía la pública (que es lo correcto). ¡Gracias!