15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar
29.10.2024

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

CentOS / RHEL / AlmaLinux / Rocky Linux

sudo yum install openssh-server -y

Fedora

sudo dnf install openssh-server -y

Arch Linux

sudo pacman -S openssh

Tras 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 ssh

Habilitar SSH para que inicie al arrancar

sudo systemctl enable ssh

Verificar que el servicio está en ejecución

sudo systemctl status ssh

Una 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_config

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

Abra el archivo con su editor de texto preferido:

sudo nano /etc/ssh/sshd_config

Despué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 -t

Si no se devuelven errores, aplique los cambios:

sudo systemctl restart ssh

Paso 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 22

Descoméntela y establezca un puerto personalizado (elija un número entre 1024 y 65535 que no esté ya en uso):

Port 2222

Guarde 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 yes

Cámbiela a:

PermitRootLogin no

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

Paso 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:

  1. Elija una ruta de archivo (presione Enter para aceptar el valor predeterminado ~/.ssh/id_ed25519)
  2. 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 -t
  • [ ] Acceso a consola fuera de banda confirmado (KVM/VNC)

Conclusió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:

  1. Instalado e iniciado el servidor OpenSSH
  2. Cambiado el puerto predeterminado y deshabilitado el inicio de sesión root
  3. Implementado autenticación basada en claves criptográficamente sólida
  4. Configurado reglas de firewall para restringir el acceso
  5. Implementado Fail2Ban para bloquear intentos de fuerza bruta
  6. 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.

15%

Ahorra 15%<\/span> en todos los servicios de hosting

Pon a prueba tus habilidades y obtén Descuento<\/span> en cualquier plan de hosting

Usa el código:

Skills
Comenzar