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
- 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
- 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.
- 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.