SSH: autenticación por claves

En este tutorial, explicaré cómo conectarse a un servidor/computadora Linux a través de SSH sin contraseña usando un par de claves (privada/pública).

Generar par de claves con ssh-keygen

Para generar un par de claves es necesario tener disponible un cliente SSH, es posible hacerlo desde Windows 10 o Linux.

En este tutorial, utilicé mi computadora con Windows 10.

Para generar un par de claves, ingrese el siguiente comando:

ssh-keygen -b 4096

-b 4096 le permite generar una clave de 4096 bits, por defecto es 2048

Primero, el generador te pide que indiques el archivo donde está almacenado, por defecto el nombre del archivo id_rsa. Para utilizar el valor predeterminado, presione Entrar.

Si tiene dudas, primero verifique si hay un par de claves en la carpeta usuario/.ssh de su computadora, ya que se sobrescribirá.

Luego puede ingresar una contraseña para proteger la clave privada, déjela en blanco para no tener contraseña.

Si ingresa una contraseña, se le solicitará en cada conexión; en un entorno crítico, le aconsejo que ingrese una contraseña.

Después de la validación de la contraseña, se genera la clave:

Luego vamos a la carpeta .ssh y visualizamos el contenido, encontramos los archivos de nuestro par de claves.

El archivo id_rsa es la clave privada, la que debe permanecer en tu ordenador y el archivo id_rsa.pub es la clave pública en la que instalaremos el/los servidor(es) SSH para conectarnos.

Le recomiendo encarecidamente que haga una copia de seguridad de su par de claves.

Configurar el servidor SSH

Ahora que tenemos un par de claves, configuraremos nuestro servidor SSH para conectarnos a él mediante un par de claves.

De hecho, configuraremos principalmente nuestra clave pública en una cuenta de usuario para conectarnos sin contraseña (rdrit).

Obviamente, no hacemos esto en la cuenta root…

En el servidor Linux, vaya a la carpeta de inicio del usuario con el que desea conectarse.

Verifique que la carpeta .ssh esté presente (ll).

Si la carpeta no existe, créela:

mkdir .ssh

En la carpeta .ssh, si está presente, verifique si existe el archivo autorizado_keys. De lo contrario tienes que crearlo:

touch .ssh/authorized_keys

Luego edite el archivo autorizado_keys con nano por ejemplo, en el que copiaremos la clave pública.

nano .ssh/authorized_keys

Copie la clave pública que se encuentra en el archivo id_rsa.pub.

Salga del editor guardando el archivo.

De ahora en adelante, puede conectarse desde su computadora a la computadora con Linux usando SSH sin contraseña.

ssh utilisateur@ip_serveur

Deshabilitar la autenticación de contraseña en el servidor SSH

Este paso es opcional, pero aumentando el nivel de seguridad de tu servidor, un ataque de fuerza bruta con una clave privada de 4096 bits es muy largo y difícil de realizar.

Antes de realizar esta operación es necesario tomar una precaución muy importante, con acceso al ordenador que no sea vía SSH, es decir acceso tipo KVM para un VPS de alquiler en Internet o acceso tipo Hyper-V/VMWare. consolas o para un servidor físico, acceso físico o por ILO/Idrac.

En el caso de un servidor físico alquilado (Scaleway, OVH, etc.), los servidores básicos no tienen acceso KVM, en caso de pérdida de su clave pública o privada, será imposible retomar la mano desde arriba. .

Edite el archivo de configuración del servidor SSH

sudo nano /etc/ssh/sshd_config

Busca la directiva PasswordAuthentication, si está comentada debes descomentarla y cambiar el valor a no. Si no existe, crea la línea.

Guarde el archivo y reinicie el servicio ssh para aplicar la configuración.

sudo systemctl restart sshd

Ahora ya no es posible iniciar sesión con contraseña.

Usando sudo sin contraseña

En la última parte de este tutorial, le explicaré cómo asegurarse de que no tenga una solicitud de contraseña cuando use sudo.

Esta manipulación aumenta la exposición de su servidor, especialmente en caso de robo de su clave privada.

Abra el archivo /etc/sudoers con nano.

sudo visudo /etc/sudoers

Al final añade la línea siguiente, adaptándote a tu usuario:

utilisateur    ALL=(ALL) NOPASSWD:ALL

Guarda el archivo.

Ahora puedes ejecutar comandos sudo sin necesidad de contraseña.




Deja un comentario