Cómo configurar SSH en un VPS para no depender de contraseñas
- ssh
- seguridad
- vps
- infraestructura
- linux
Si gestionas un VPS, el acceso seguro es crítico. Depender de contraseñas para el acceso SSH introduce un riesgo que se puede eliminar. Las claves SSH mejoran la seguridad y el acceso a tus servidores.
Mi regla es clara: cualquier servidor que administro solo permite acceso mediante clave SSH. Permitir el acceso con contraseña expone el servidor a ataques de fuerza bruta, incluso con una contraseña robusta.
Generación de claves SSH
Crea un par de claves SSH en tu máquina local. Una clave pública se subirá al servidor y una clave privada se mantendrá en tu equipo, protegida con una contraseña robusta. Este par de claves permite la autenticación sin usar una contraseña tradicional.
Usa el algoritmo ED25519; es más moderno y seguro que RSA. Ejecuta este comando en tu terminal:
ssh-keygen -t ed25519 -C "[email protected]"
El sistema te pedirá una ubicación para guardar las claves y una passphrase. No la dejes vacía. Esta passphrase protege tu clave privada, añadiendo una capa extra de seguridad si alguien accede a tu máquina.
Copia de la clave pública al VPS con ssh-copy-id
Una vez generadas las claves, copia la clave pública a tu VPS. El método más directo es con ssh-copy-id. Este comando no solo copia la clave, sino que también establece los permisos correctos en el archivo ~/.ssh/authorized_keys del servidor.
Asegúrate de tener el usuario correcto y la dirección IP o dominio de tu VPS:
ssh-copy-id -i ~/.ssh/id_ed25519.pub usuario@tu_vps_ip_o_dominio
Si ssh-copy-id no está disponible o tienes algún problema, puedes hacerlo manualmente. Simplemente copia el contenido de tu archivo ~/.ssh/id_ed25519.pub y pégalo en el archivo ~/.ssh/authorized_keys de tu VPS, creando la carpeta y el archivo si no existen y asegurándote de que los permisos sean 700 para .ssh y 600 para authorized_keys. Si trabajas con múltiples usuarios en un mismo VPS, recuerda que cada uno debe tener su propio par de claves para mantener el aislamiento de accesos, un buen patrón que he usado en proyectos con usuarios VPS compartidos.
Desactivación del acceso por contraseña SSH en el servidor
Este paso asegura tu servidor. Una vez verificado el acceso con tu clave SSH, desactiva por completo la autenticación por contraseña. Esto se realiza editando el archivo de configuración del demonio SSH.
Conéctate a tu VPS y edita el archivo /etc/ssh/sshd_config con nano o vim:
sudo nano /etc/ssh/sshd_config
Busca las siguientes líneas y asegúrate de que estén configuradas así, descomentándolas si es necesario:
PasswordAuthentication no
PermitRootLogin no
PasswordAuthentication no desactiva el inicio de sesión con contraseña para todos los usuarios. PermitRootLogin no impide que el usuario root inicie sesión directamente, forzando a usar un usuario estándar y luego sudo. Después de guardar los cambios, reinicia el servicio SSH para que la nueva configuración surta efecto:
sudo systemctl restart sshd
Antes de cerrar tu sesión actual, abre una nueva terminal e intenta conectarte a tu VPS. Si logras acceder con la clave, la configuración es correcta. Si tienes problemas, aún tienes la sesión antigua abierta para revertir los cambios.
Ventajas y desventajas de las claves SSH
Ventajas:
- Seguridad drásticamente mejorada: Eliminas por completo el riesgo de ataques de fuerza bruta y la exposición de contraseñas.
- Conveniencia para la automatización: Puedes usar claves SSH sin passphrase en scripts para automatizar tareas, deploys o backups.
- Acceso más rápido: No necesitas escribir una contraseña cada vez que te conectas.
Desventajas:
- Gestión inicial: El proceso de generación y copia de claves puede ser un poco más complejo la primera vez.
- Pérdida de clave privada: Si pierdes tu clave privada y no tienes una copia de seguridad, no podrás acceder a tu servidor.
- Dependencia de la passphrase: Si olvidas la passphrase de tu clave privada, esta se vuelve inútil.
La seguridad no es negociable. El esfuerzo inicial de configurar las claves SSH se justifica por la robustez y la tranquilidad que aporta.
Gestión de acceso con múltiples usuarios y claves
En entornos donde varias personas necesitan acceder al mismo VPS, cada usuario debería tener su propio par de claves SSH. Esto permite un control de acceso granular y facilita la revocación de acceso a un usuario específico sin afectar a los demás. Simplemente añades la clave pública de cada usuario en su respectivo archivo ~/.ssh/authorized_keys.
Esta separación mejora la seguridad y simplifica la auditoría de accesos. Si combinas esto con una configuración de firewall con iptables, tendrás un servidor mucho más robusto.
Asegurar el acceso a tu VPS es crítico. Con SSH configurado con claves, el siguiente paso es proteger tu servidor de ataques externos con Fail2ban. También es recomendable establecer un sistema de monitorización básica de tu VPS para anticipar cualquier problema.
Técnico freelance especializado en desarrollo a medida, automatizaciones con IA y gestión técnica para negocios en España. Más sobre mí →
¿Necesitas que alguien se ocupe de tu web?
Me encargo de que tu web funcione, esté segura y actualizada. Backups, actualizaciones y soporte directo. Planes desde 49 €/mes.