Si queremos aumentar la seguridad en nuestro servidor para los «inicio de sesión», podemos deshabilitar el uso de una clave para el usuario root (u otro usuario) y entablar la conexión mediante llaves, evitando su escritura.
¿Pero que son las llaves públicas y privadas?
La guía está enfocada en clientes que usen como su sistema operativo Linux, por lo tanto solo se explicará el proceso desde la terminal.
NOTA: Se recomienda realizar estos pasos durante la configuración inicial de su servidor.
Paso 1 – Debemos escribir el siguiente comando en la PC local:
ssh-keygen -t rsa
Para que culmine la generación de las llaves, el sistema le hará algunas preguntas como la ruta donde se almacenarán (por defecto en /home/user/.ssh/id_rsa). La segunda pregunta será sobre asignar una clave o no. En caso de asignar una clave tendrá que escribirla cada vez que use la llave privada, caso contrario solo puede dejarlo en blanco y apretar ‘enter’.
Finalmente obtendrá como resultado lo siguiente:
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
4a:dd:0a:c6:35:4e:3f:ed:27:38:8c:74:44:4d:93:67 user@pc
The key's randomart image is:
+--[ RSA 2048]----+
| .oo. |
| . o.E |
| + . o |
| . = = . |
| = S = . |
| o + = + |
| . o + o . |
| . o |
| |
+-----------------+
Paso 2 – Copiamos la clave publica en nuestro servidor, usando el siguiente comando:
cat ~/.ssh/id_rsa.pub | ssh root@192.168.1.2 -p 2211 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Donde recibirá un mensaje de confirmación que se agregó dicha clave.
Paso 3 – Finalmente tenemos que deshabilitar el uso de la contraseña para el inicio de sesión a través de SSH en el servidor remoto, modificando algunos parámetros en el archivo de configuración del servicio:
nano / etc / ssh / sshd_config
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no
NOTA: Asegúrese de efectuar todos los pasos descritos, a lo contrario posterior al reinicio del servicio SSH no podrá acceder al servidor usando la contraseña para root.
Luego reiniciaremos el servicio SSH en el servidor remoto para hacer efectivo los nuevos parámetros:
Para servidores en Ubuntu o Debian puede usar:
systemctl restart ssh
Para servidores en Centos o Fedora
systemctl restart sshd
También puede usar el siguiente comando, donde especifica la llave privada a usar:
ssh -i llaveprueba.key root@192.168.1.2 -p 2211
Si requiere acceder a su servidor desde otros dispositivos tendrá que copiar la llave privada y configurar una sesión adjuntando la llave generada.
Conclusión
Ahora podrá usar la terminal de linux para conectarse directamente a sus servidores, sin depender de herramientas externas!