Habilitar SSH en servidor, con llave privada

Habilitar SSH en un servidor utilizando solo una clave privada y deshabilitar la autenticación por contraseña es un enfoque seguro para proteger el acceso al servidor. A continuación, te presento un tutorial paso a paso para lograr esto en un servidor Linux (por ejemplo, Ubuntu).

Paso 1: Generar un Par de Claves SSH

Si aún no tienes un par de claves SSH en tu máquina local, debes generarlo. Abre una terminal en tu máquina local y ejecuta el siguiente comando:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Esto te pedirá una ubicación para guardar la clave (puedes aceptar la ubicación predeterminada ~/.ssh/id_rsa) y una frase de contraseña para mayor seguridad (opcional pero recomendado).

Paso 2: Copiar la Clave Pública al Servidor

Usa ssh-copy-id para copiar la clave pública al servidor remoto. Reemplaza usuario y servidor con el nombre de usuario y la dirección de tu servidor:

ssh-copy-id -i ~/.ssh/id_rsa.pub usuario@servidor

Si ssh-copy-id no está disponible, puedes copiar la clave pública manualmente:

cat ~/.ssh/id_rsa.pub | ssh usuario@servidor 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'

Paso 3: Configurar el Servidor SSH

Inicia sesión en tu servidor:

ssh usuario@servidor

Edita el archivo de configuración del servidor SSH:

sudo nano /etc/ssh/sshd_config

Asegúrate de que las siguientes líneas estén configuradas como se indica:

iniCopiar códigoPubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes

Estas configuraciones hacen lo siguiente:

  • PubkeyAuthentication yes: Habilita la autenticación basada en claves públicas.
  • PasswordAuthentication no: Deshabilita la autenticación por contraseña.
  • ChallengeResponseAuthentication no: Deshabilita cualquier método de autenticación que utilice desafíos (opcional pero recomendado).
  • UsePAM yes: Permite la autenticación basada en PAM (Pluggable Authentication Modules), que no afecta la autenticación por clave pública pero puede ser necesario para otros servicios.

Paso 4: Reiniciar el Servicio SSH

Después de realizar estos cambios, reinicia el servicio SSH para aplicar la nueva configuración:

sudo systemctl restart ssh

Paso 5: Verificar la Configuración

Cierra la sesión actual y trata de conectarte de nuevo usando la clave privada:

ssh -i ~/.ssh/id_rsa usuario@servidor

Si la configuración es correcta, deberías poder iniciar sesión sin que te soliciten una contraseña.

Paso 6: Opcional – Configurar el Archivo ~/.ssh/config (en tu máquina local)

Para simplificar futuras conexiones SSH, puedes configurar un archivo ~/.ssh/config en tu máquina local:

nano ~/.ssh/config

Añade la configuración del servidor:

iniCopiar códigoHost mi_servidor
    HostName servidor
    User usuario
    IdentityFile ~/.ssh/id_rsa

Con esta configuración, puedes conectarte al servidor simplemente usando:

ssh mi_servidor

Resumen de Seguridad

  1. Proteger tu clave privada: Asegúrate de que tu clave privada (~/.ssh/id_rsa) tenga permisos adecuados (600) para que solo tú puedas leerla:bashCopiar códigochmod 600 ~/.ssh/id_rsa
  2. Usar una frase de contraseña: Es altamente recomendable usar una frase de contraseña para tu clave privada para añadir una capa adicional de seguridad.
  3. Guardar copias de seguridad: Guarda copias de seguridad de tus claves en un lugar seguro.

Conclusión

Siguiendo estos pasos, habrás configurado tu servidor SSH para aceptar solo autenticación basada en clave privada y deshabilitar la autenticación por contraseña, aumentando así la seguridad de tu servidor.

Leave a Reply

Your email address will not be published. Required fields are marked *