Cómo instalar y configurar SSH en Linux: una guía de seguridad completa para 2025
SSH es el punto de acceso más crítico en su servidor. Una configuración SSH incorrecta puede ser comprometida en menos de cinco minutos por bots automatizados que escanean internet. Ya sea que esté administrando un entorno de VPS Hosting, una máquina bare-metal o una instancia en la nube, proteger SSH correctamente desde el primer día es innegociable.
En esta guía, aprenderá cómo instalar OpenSSH, configurarlo de forma segura, implementar autenticación basada en claves y aplicar técnicas de hardening de nivel producción — todo en un servidor Linux en 2025.
¿Qué es SSH y por qué es importante?
SSH (Secure Shell) es un protocolo de red criptográfico que permite a los usuarios conectarse de forma segura a un sistema remoto a través de una red no segura como internet. Todos los datos transmitidos entre el cliente y el servidor están completamente cifrados, lo que lo convierte en el estándar de la industria para la administración remota de servidores.
Por defecto, SSH opera en el puerto 22 y admite:
- Inicio de sesión remoto en servidores y máquinas virtuales
- Transferencia segura de archivos mediante SCP y SFTP
- Ejecución remota de comandos y automatización mediante scripts
- Reenvío de puertos y tunelización para enrutamiento seguro del tráfico
- Reenvío X11 para acceso a aplicaciones gráficas
SSH es su interfaz administrativa principal. Trátela en consecuencia.
Paso 1: Instalación del servidor OpenSSH
La mayoría de las distribuciones modernas de Linux incluyen OpenSSH preinstalado. Si no está disponible, instálelo usando el gestor de paquetes apropiado para su distribución.
Ubuntu / Debian
sudo apt update
sudo apt install openssh-server -yCentOS / RHEL / AlmaLinux / Rocky Linux
sudo yum install openssh-server -yFedora
sudo dnf install openssh-server -yArch Linux
sudo pacman -S opensshTras la instalación, tanto el servidor OpenSSH (sshd) como el cliente OpenSSH están disponibles, lo que le permite aceptar conexiones entrantes y conectarse a otros servidores remotos.
Paso 2: Iniciar y habilitar el servicio SSH
Una vez instalado, debe iniciar el daemon SSH (sshd) y configurarlo para que se inicie automáticamente al arrancar el sistema.
Iniciar el servicio SSH
sudo systemctl start sshHabilitar SSH para que inicie al arrancar
sudo systemctl enable sshVerificar que el servicio está en ejecución
sudo systemctl status sshUna salida correcta mostrará active (running) en verde. Si ve algún error, revise los registros del sistema con journalctl -xe para obtener detalles de diagnóstico.
Paso 3: Comprender el archivo de configuración SSH
El comportamiento de SSH está gobernado por un único archivo de configuración principal:
/etc/ssh/sshd_configEste archivo controla todo: el puerto de escucha, los métodos de autenticación, los usuarios permitidos, las restricciones de inicio de sesión y más. Siempre cree una copia de seguridad antes de realizar cambios:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bakAbra el archivo con su editor de texto preferido:
sudo nano /etc/ssh/sshd_configDespués de realizar cualquier cambio, siempre valide la sintaxis de la configuración antes de reiniciar el servicio para evitar bloquearse el acceso:
sudo sshd -tSi no se devuelven errores, aplique los cambios:
sudo systemctl restart sshPaso 4: Cambios esenciales en la configuración SSH
4.1 Cambiar el puerto SSH predeterminado
El puerto 22 es el primer puerto que atacan los escáneres automatizados y los bots de fuerza bruta. Cambiarlo a un puerto no estándar reduce drásticamente el ruido en sus registros y disminuye la exposición a ataques oportunistas.
Localice esta línea en sshd_config:
#Port 22Descoméntela y establezca un puerto personalizado (elija un número entre 1024 y 65535 que no esté ya en uso):
Port 2222Guarde el archivo, valide y reinicie SSH:
sudo sshd -t && sudo systemctl restart ssh> Importante: Actualice las reglas de su firewall inmediatamente después de cambiar el puerto (consulte el Paso 6). No hacerlo le bloqueará el acceso a su servidor.
4.2 Deshabilitar el inicio de sesión root mediante SSH
Permitir el inicio de sesión directo como root a través de SSH es una de las configuraciones incorrectas más comunes y peligrosas. Si un atacante adivina o fuerza la contraseña de root, tendrá control total y sin restricciones de su sistema.
Encuentre esta directiva:
PermitRootLogin yesCámbiela a:
PermitRootLogin noLos usuarios deben iniciar sesión con una cuenta estándar y escalar privilegios usando sudo cuando sea necesario. Esto crea una capa de auditoría esencial — cada acción privilegiada queda registrada contra una cuenta de usuario con nombre.
4.3 Imponer autenticación basada en claves y deshabilitar contraseñas
La autenticación basada en contraseñas es inherentemente vulnerable a ataques de fuerza bruta. Los pares de claves SSH — una combinación de clave pública/privada matemáticamente vinculada — son exponencialmente más seguros.
Localice y establezca las siguientes directivas:
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no> Advertencia: Solo deshabilite la autenticación por contraseña después de haber probado con éxito el inicio de sesión basado en claves. Deshabilitar las contraseñas sin una clave funcional le bloqueará el acceso permanentemente.
4.4 Directivas adicionales de hardening
Agregue o modifique estas configuraciones en sshd_config para una configuración de producción reforzada:
# Restrict login to specific users (replace 'youruser' with actual usernames)
AllowUsers youruser
# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2
# Limit authentication attempts per connection
MaxAuthTries 3
# Disable empty passwords
PermitEmptyPasswords no
# Disable X11 forwarding if not needed
X11Forwarding no
# Use only modern, secure protocol version
Protocol 2
# Restrict SSH to specific network interface (optional, replace with your IP)
ListenAddress 0.0.0.0Paso 5: Generación e implementación de pares de claves SSH
La autenticación mediante claves SSH reemplaza las contraseñas con prueba criptográfica de identidad. Así es como configurarla correctamente.
Paso 5.1: Generar un par de claves en su máquina local
Ejecute este comando en su estación de trabajo local (no en el servidor):
ssh-keygen -t ed25519 -C "your_email@example.com"> ¿Por qué Ed25519? Ed25519 es un algoritmo moderno de curva elíptica que es más rápido, más seguro y produce claves más cortas que el algoritmo RSA más antiguo. Es la opción recomendada en 2025.
Si su sistema o herramientas requieren RSA por razones de compatibilidad, use una clave de 4096 bits:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"Se le pedirá que:
- Elija una ruta de archivo (presione Enter para aceptar el valor predeterminado
~/.ssh/id_ed25519) - Establezca una frase de contraseña opcional (muy recomendada — esto cifra su clave privada en reposo)
Esto genera dos archivos:
~/.ssh/id_ed25519 — Su clave privada. Nunca la comparta. Nunca la copie a un servidor.
~/.ssh/id_ed25519.pub — Su clave pública. Esto es lo que se instala en los servidores.
Paso 5.2: Copiar la clave pública al servidor
Use ssh-copy-id para transferir de forma segura su clave pública al servidor remoto:
ssh-copy-id -p 2222 username@your_server_ip
Reemplace username con el nombre de su cuenta en el servidor y your_server_ip con la dirección IP real.
Este comando agrega su clave pública a ~/.ssh/authorized_keys en el servidor con los permisos correctos automáticamente.
Método manual (si ssh-copy-id no está disponible):
cat ~/.ssh/id_ed25519.pub | ssh username@your_server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Paso 5.3: Probar el inicio de sesión basado en claves
Antes de deshabilitar la autenticación por contraseña, verifique que el inicio de sesión basado en claves funciona:
ssh -p 2222 username@your_server_ip
Si se conecta correctamente sin que se le solicite una contraseña (o solo la frase de contraseña de su clave), la autenticación basada en claves está funcionando correctamente. Ahora puede deshabilitar de forma segura la autenticación por contraseña en sshd_config.
Paso 6: Configurar su firewall para SSH
Un firewall es su primera línea de defensa. Siempre configúrelo para permitir únicamente el puerto SSH que está utilizando.
Usando UFW (Ubuntu / Debian)
# Allow your custom SSH port
sudo ufw allow 2222/tcp
# Enable the firewall
sudo ufw enable
# Verify the rules
sudo ufw status verbose
Usando firewalld (CentOS / RHEL / Fedora)
# Add the custom SSH port
sudo firewall-cmd --permanent --add-port=2222/tcp
# Remove the default port 22 (optional, after confirming new port works)
sudo firewall-cmd --permanent --remove-service=ssh
# Reload firewall rules
sudo firewall-cmd --reload
Restringir el acceso SSH por dirección IP
Para máxima seguridad, limite el acceso SSH únicamente a direcciones IP conocidas y de confianza:
# UFW example: allow SSH only from a specific IP
sudo ufw allow from 203.0.113.10 to any port 2222 proto tcp
Esto es especialmente efectivo en Servidores Dedicados donde usted controla todo el acceso administrativo desde una oficina fija o un rango de IP de VPN.
Paso 7: Medidas de seguridad avanzadas
7.1 Instalar y configurar Fail2Ban
Fail2Ban monitorea los archivos de registro SSH y bloquea automáticamente las direcciones IP que muestran signos de actividad de fuerza bruta.
# Install Fail2Ban
sudo apt install fail2ban -y # Ubuntu/Debian
sudo yum install fail2ban -y # CentOS/RHEL
# Create a local configuration file
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Edite /etc/fail2ban/jail.local y configure la jaula SSH:
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
Inicie y habilite Fail2Ban:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
7.2 Usar el archivo de configuración SSH para la gestión del lado del cliente
En su máquina local, cree o edite ~/.ssh/config para simplificar las conexiones y aplicar configuraciones de seguridad:
Host myserver
HostName your_server_ip
User youruser
Port 2222
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
ServerAliveCountMax 3
Con esta configuración, puede conectarse simplemente escribiendo:
ssh myserver
7.3 Autenticación de dos factores (2FA) para SSH
Para entornos que requieren el más alto nivel de seguridad de acceso — como bases de datos de producción, sistemas financieros o infraestructura regulada por cumplimiento normativo — considere agregar autenticación de dos factores basada en TOTP usando Google Authenticator o Authy junto con las claves SSH.
sudo apt install libpam-google-authenticator -y
google-authenticator
Luego configure PAM y sshd_config para requerir tanto una clave como una contraseña de un solo uso. Esto crea un verdadero flujo de autenticación multifactor.
Paso 8: Pruebas y resolución de problemas de SSH
Después de completar su configuración, verifique sistemáticamente que todo funciona como se espera.
Prueba de conexión
ssh -p 2222 -v username@your_server_ip
El indicador -v habilita el modo detallado, imprimiendo información de depuración detallada sobre cada etapa de la conexión — invaluable para diagnosticar fallos de autenticación.
Problemas comunes y soluciones
Problema
Causa probable
Solución
Connection refused
SSH no está en ejecución o el puerto es incorrecto
Verifique systemctl status ssh y las reglas del firewall
Permission denied (publickey)
Clave no está en authorized_keys o permisos incorrectos
Verifique que ~/.ssh/authorized_keys existe con chmod 600
Host key verification failed
La huella digital del servidor cambió
Elimine la entrada antigua de ~/.ssh/known_hosts
Connection timed out
El firewall está bloqueando el puerto
Verifique las reglas de UFW/firewalld y los grupos de seguridad en la nube
Bloqueado tras cambio de configuración
Configuración incorrecta en sshd_config
Use acceso por consola/KVM para revertir los cambios
Comandos de diagnóstico
# Check SSH service status
sudo systemctl status ssh
# View real-time SSH logs
sudo journalctl -u ssh -f
# Check which port SSH is listening on
sudo ss -tlnp | grep sshd
# Test configuration file syntax
sudo sshd -t
Referencia completa de sshd_config reforzado
Aquí hay un sshd_config listo para producción que incorpora todas las recomendaciones de seguridad de esta guía:
# Network
Port 2222
ListenAddress 0.0.0.0
Protocol 2
# Authentication
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
MaxAuthTries 3
LoginGraceTime 30
# Session Management
ClientAliveInterval 300
ClientAliveCountMax 2
MaxSessions 5
# Access Control
AllowUsers youruser
# Features (disable what you don't need)
X11Forwarding no
AllowTcpForwarding no
GatewayPorts no
PermitUserEnvironment no
# Logging
SyslogFacility AUTH
LogLevel VERBOSE
Por qué su infraestructura de hosting es importante para la seguridad SSH
La seguridad de su configuración SSH no existe de forma aislada — depende en gran medida de la infraestructura subyacente. Una configuración SSH correctamente reforzada es más efectiva cuando se implementa en un servidor que ya proporciona:
Protección DDoS para absorber ataques volumétricos antes de que lleguen a su puerto SSH
Almacenamiento NVMe para escrituras rápidas de registros y tiempos de respuesta rápidos de Fail2Ban
Puertos de red de 1 Gbps para garantizar la estabilidad de la conexión bajo carga
Acceso KVM/consola como método de recuperación fuera de banda si accidentalmente se bloquea el acceso
Los planes de VPS Hosting de AlexHost incluyen todo lo anterior, con acceso root completo y soporte para configuraciones de firewall personalizadas — lo que los hace ideales para implementar la configuración SSH reforzada descrita en esta guía.
Si necesita un panel de control para administrar su servidor junto con SSH, explore Paneles de Control VPS para opciones que incluyen cPanel, Plesk y DirectAdmin. Para equipos que administran múltiples propiedades web, el Hosting Web Compartido proporciona un entorno administrado donde el hardening SSH se gestiona a nivel de infraestructura.
Y si está ejecutando servicios web protegidos con SSL junto a su servidor reforzado con SSH, combinar su configuración con una solución de confianza de Certificados SSL garantiza el cifrado de extremo a extremo en todos sus servicios públicos.
Lista de verificación de seguridad SSH
Use esta lista de verificación antes de considerar su configuración SSH lista para producción:
[ ] Servidor OpenSSH instalado y en ejecución
[ ] Puerto predeterminado 22 cambiado a un puerto personalizado
[ ] Inicio de sesión root deshabilitado (PermitRootLogin no)
[ ] Par de claves Ed25519 o RSA-4096 generado
[ ] Clave pública implementada en authorized_keys en el servidor
[ ] Inicio de sesión basado en claves probado con éxito
[ ] Autenticación por contraseña deshabilitada
[ ] Firewall configurado para permitir solo el nuevo puerto SSH
[ ] Fail2Ban instalado y configurado
[ ] MaxAuthTries establecido en 3 o menos
[ ] ClientAliveInterval configurado para terminar sesiones inactivas
[ ] Sintaxis de sshd_config validada con sudo sshd -tConclusión
Instalar y configurar SSH correctamente es una de las habilidades más fundamentales en la administración de sistemas Linux. Una instalación SSH predeterminada es un riesgo; una configuración SSH reforzada es un activo. Siguiendo esta guía, usted ha:
- Instalado e iniciado el servidor OpenSSH
- Cambiado el puerto predeterminado y deshabilitado el inicio de sesión root
- Implementado autenticación basada en claves criptográficamente sólida
- Configurado reglas de firewall para restringir el acceso
- Implementado Fail2Ban para bloquear intentos de fuerza bruta
- Establecido una metodología completa de resolución de problemas
SSH, cuando está correctamente configurado, se convierte en una puerta de enlace potente, confiable y segura para la gestión remota, las canalizaciones de automatización y la comunicación cifrada entre sistemas. Combinado con una infraestructura de hosting robusta — como los Servidores Dedicados de AlexHost con mitigación DDoS a nivel de hardware — tiene una base que es genuinamente difícil de comprometer.
Revise su configuración SSH periódicamente. Rote sus claves anualmente. Monitoree sus registros. La seguridad no es una tarea única — es una práctica continua.
