Ahorre 15% 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
Secciones
Linux Seguridad Servidores virtuales

SSH en Alojamiento Virtual: La Guía Completa para la Gestión Segura del Servidor

Secure Shell (SSH) es una de las herramientas más poderosas y esenciales en el arsenal de cualquier administrador de sistemas. Ya sea que estés gestionando un pequeño proyecto personal o ejecutando una aplicación web de producción, SSH te proporciona acceso remoto encriptado y autenticado a tu servidor — permitiéndote ejecutar comandos, transferir archivos y configurar servicios sin tocar nunca la máquina física.

Esta guía completa cubre todo lo que necesitas saber sobre trabajar con SSH en un entorno de alojamiento virtual: desde tu primera conexión hasta reforzar tu configuración contra ataques de fuerza bruta.

1. ¿Qué es SSH y por qué es importante?

SSH (Secure Shell) es un protocolo de red criptográfico que crea un túnel encriptado entre tu máquina local (el cliente) y un servidor remoto. A diferencia de protocolos más antiguos como Telnet o FTP, SSH encripta todo el tráfico — incluyendo credenciales — haciendo que sea prácticamente imposible para un atacante interceptar datos sensibles en tránsito.

SSH es el método estándar para:

  • Acceso remoto a la línea de comandos — ejecutar cualquier comando Linux/Unix en tu servidor como si estuvieras frente a él
  • Transferencias seguras de archivos — mover archivos entre máquinas usando SCP o SFTP
  • Tunelización y reenvío de puertos — enrutar otros protocolos de forma segura a través de una conexión SSH
  • Implementaciones automatizadas y scripts — los pipelines CI/CD, trabajos cron y scripts de copia de seguridad dependen todos de SSH
  • Gestión de servidores web y aplicaciones — configurar Nginx, Apache, MySQL y más

Si estás ejecutando un plan de VPS Hosting o un Servidor Dedicado, SSH es casi con certeza tu interfaz principal para la administración diaria.

2. Requisitos previos antes de conectarse

Antes de establecer su primera conexión SSH, asegúrese de tener lo siguiente:

RequisitoDetalles
Dirección IP del servidorProporcionada en su panel de control de hosting o correo de bienvenida
Nombre de usuario SSHTípicamente root para un VPS nuevo, o un usuario personalizado en entornos administrados
Contraseña o clave SSHEstablecida durante el aprovisionamiento o enviada por correo electrónico
Cliente SSHIntegrado en Linux/macOS; PuTTY o Windows Terminal en Windows
Puerto SSHEl predeterminado es 22, pero puede ser personalizado por seguridad

> Nota: Si está en un plan de Alojamiento Web Compartido, el acceso SSH puede estar restringido o requerir activación explícita en su panel de control. Consulte con su proveedor.

3. Cómo acceder a su servidor a través de SSH

Paso 1: Abra su terminal o cliente SSH

  • Linux / macOS: Abra la aplicación Terminal integrada
  • Windows 10/11: Use Windows Terminal, PowerShell o Command Prompt (todos incluyen un cliente SSH nativo)
  • Windows (heredado): Descargue PuTTY como cliente SSH gratuito

Paso 2: Conéctese a su servidor

Utilice la siguiente sintaxis:

ssh username@your_server_ip

Ejemplo:

ssh root@203.0.113.45

Si su servidor utiliza un puerto no estándar (más información sobre por qué debería cambiarlo más adelante), especifíquelo con la bandera -p:

ssh username@your_server_ip -p 2222

Paso 3: Verifique la huella digital del host

La primera vez que se conecta a un nuevo servidor, SSH mostrará un mensaje como este:

The authenticity of host '203.0.113.45 (203.0.113.45)' can't be established.
ED25519 key fingerprint is SHA256:abc123...
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Escriba yes y presione Intro. SSH guardará la huella digital del servidor en su archivo ~/.ssh/known_hosts. En futuras conexiones, verificará la identidad del servidor automáticamente — alertándole si algo cambia (lo que podría indicar un ataque man-in-the-middle).

Paso 4: Autentíquese

Ingrese su contraseña cuando se le solicite. Tenga en cuenta que la terminal no mostrará ningún carácter mientras escribe — este es el comportamiento normal por razones de seguridad.

Una vez autenticado, verá el símbolo del sistema de su servidor, típicamente algo como:

root@hostname:~#

Ahora está conectado y puede comenzar a administrar su servidor.

4. Comandos SSH Esenciales para la Gestión del Servidor

Una vez conectado, tienes acceso completo a la línea de comandos de Linux. Aquí están los comandos más importantes para gestionar un entorno de alojamiento virtual:

Operaciones de Archivos y Directorios

# List files and directories with details
ls -la

# Change to a specific directory
cd /var/www/html

# Create a new directory
mkdir my_project

# Remove a file
rm filename.txt

# Remove a directory and its contents
rm -rf /path/to/directory

# Copy a file
cp source.txt destination.txt

# Move or rename a file
mv oldname.txt newname.txt

Visualización y Edición de Archivos

# View file contents
cat /etc/nginx/nginx.conf

# View large files page by page
less /var/log/nginx/access.log

# Edit a file with nano (beginner-friendly)
nano /etc/ssh/sshd_config

# Edit a file with vim (advanced)
vim /etc/nginx/sites-available/default

Monitoreo del Sistema

# Check disk usage (human-readable)
df -h

# Check memory usage
free -m

# Real-time process monitor
top

# Enhanced process monitor (install if needed)
htop

# Check running services
systemctl status nginx

# View recent system logs
journalctl -xe

Gestión de Paquetes (Ubuntu/Debian)

# Update package list
sudo apt update

# Upgrade installed packages
sudo apt upgrade -y

# Install a package
sudo apt install package-name

# Remove a package
sudo apt remove package-name

Diagnósticos de Red

# Check open ports and listening services
ss -tulnp

# Test connectivity to a host
ping google.com

# Trace the network route to a host
traceroute google.com

# Check your server's public IP
curl ifconfig.me

5. Endurecimiento de su configuración SSH

La configuración SSH predeterminada es funcional pero no óptimamente segura. Dado que SSH está expuesto a Internet, es un objetivo constante para ataques de fuerza bruta automatizados. Los siguientes pasos reducen significativamente su superficie de ataque.

Todos los cambios se realizan en el archivo de configuración del demonio SSH:

sudo nano /etc/ssh/sshd_config

Después de realizar cualquier cambio, siempre recargue el servicio SSH:

sudo systemctl reload sshd

> ⚠️ Advertencia crítica: Antes de realizar cambios en la configuración SSH, siempre mantenga una segunda sesión de terminal abierta y conectada. Si configura incorrectamente SSH y pierde acceso, es posible que deba usar la consola de emergencia de su proveedor de alojamiento para recuperarse.

Paso 1: Cambiar el puerto SSH predeterminado

El puerto 22 es el puerto SSH predeterminado y es constantemente escaneado por bots automatizados. Cambiarlo a un puerto alto y no estándar no detendrá a un atacante decidido, pero reduce dramáticamente el ruido de los escaneos automatizados.

En /etc/ssh/sshd_config, busque y modifique:

# Before:
#Port 22

# After:
Port 2222

Elimine # para descomentar la línea y establezca su puerto elegido (use cualquier número entre 1024 y 65535 que no esté en uso).

Importante: Si está ejecutando un firewall (y debería estarlo), permita el nuevo puerto antes de recargar SSH:

# UFW (Ubuntu/Debian)
sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp

# firewalld (CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload

Paso 2: Deshabilitar el inicio de sesión de root

Iniciar sesión directamente como root a través de SSH es un riesgo de seguridad significativo. En su lugar, cree una cuenta de usuario normal y use sudo para tareas administrativas.

En /etc/ssh/sshd_config:

# Before:
PermitRootLogin yes

# After:
PermitRootLogin no

Antes de deshabilitar el inicio de sesión de root, asegúrese de que:

  1. Ha creado un usuario no root: adduser myuser
  2. Ha otorgado privilegios sudo: usermod -aG sudo myuser
  3. Ha verificado que puede iniciar sesión como ese usuario en una sesión separada

Paso 3: Limitar intentos de inicio de sesión

Agregue estas directivas para reducir la efectividad de la fuerza bruta:

# Maximum authentication attempts per connection
MaxAuthTries 3

# Maximum concurrent unauthenticated connections
MaxStartups 10:30:60

# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2

Paso 4: Restringir el acceso SSH a usuarios específicos

Si solo ciertos usuarios necesitan acceso SSH, colóquelos en la lista blanca explícitamente:

AllowUsers myuser deployuser

Paso 5: Deshabilitar la autenticación por contraseña (después de configurar claves SSH)

Una vez que se configure la autenticación por clave SSH (consulte la siguiente sección), deshabilite completamente el inicio de sesión basado en contraseña:

PasswordAuthentication no
ChallengeResponseAuthentication no

Este único cambio elimina toda la clase de ataques de fuerza bruta de contraseña.

6. Autenticación por Clave SSH: La Forma Correcta de Iniciar Sesión

Las claves SSH son pares de claves criptográficas — una clave privada que permanece en tu máquina local y una clave pública que vive en el servidor. La autenticación funciona demostrando que posees la clave privada sin transmitirla nunca. Esto es mucho más seguro que las contraseñas.

Paso 1: Generar un Par de Claves SSH

Ejecuta esto en tu máquina local (no en el servidor):

ssh-keygen -t ed25519 -C "your_email@example.com"

> ¿Por qué Ed25519? Es más rápido y seguro que el algoritmo RSA más antiguo. Si tu sistema no lo soporta, usa ssh-keygen -t rsa -b 4096 en su lugar.

Se te pedirá que:

  • Elijas una ubicación de archivo — presiona Enter para aceptar la predeterminada (~/.ssh/id_ed25519)
  • Establezca una frase de contraseña — altamente recomendado; esto encripta tu clave privada para que sea inútil si se roba

Esto crea dos archivos:

    ~/.ssh/id_ed25519 — tu clave privada (nunca la compartas)
    ~/.ssh/id_ed25519.pub — tu clave pública (esto va en el servidor)
    
    Paso 2: Copiar la Clave Pública a Tu Servidor
    El método más fácil:
    ssh-copy-id username@your_server_ip
    O manualmente, si ssh-copy-id no está disponible:
    # On your local machine, display your public key:
    cat ~/.ssh/id_ed25519.pub
    
    # On the server, add it to the authorized keys file:
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "your_public_key_content" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
    Paso 3: Conectar Usando Tu Clave SSH
    # Standard port
    ssh username@your_server_ip
    
    # Custom port
    ssh username@your_server_ip -p 2222
    SSH usará automáticamente tu clave. Si estableciste una frase de contraseña, se te pedirá (esta es tu frase de contraseña local, no tu contraseña del servidor).
    Paso 4: Simplificar Conexiones con un Archivo de Configuración SSH
    Si administras múltiples servidores, crea un archivo de configuración SSH para evitar escribir comandos largos:
    nano ~/.ssh/config
    Añade entradas como esta:
    Host myserver
        HostName 203.0.113.45
        User myuser
        Port 2222
        IdentityFile ~/.ssh/id_ed25519
    
    Host staging
        HostName 203.0.113.100
        User deploy
        Port 22
        IdentityFile ~/.ssh/id_ed25519
    Ahora puedes conectar simplemente con:
    ssh myserver
    7. Transferencia Segura de Archivos con SCP y SFTP
    SSH habilita dos métodos seguros de transferencia de archivos: SCP (Secure Copy Protocol) para transferencias rápidas y SFTP (SSH File Transfer Protocol) para sesiones interactivas.
    SCP — Transferencias Rápidas de Archivos
    Copiar un archivo de tu máquina local al servidor:
    scp /path/to/local/file.txt username@your_server_ip:/path/to/remote/directory/
    Copiar un archivo del servidor a tu máquina local:
    scp username@your_server_ip:/path/to/remote/file.txt /path/to/local/directory/
    Copiar un directorio completo recursivamente:
    scp -r /path/to/local/folder username@your_server_ip:/path/to/remote/
    Usando un puerto personalizado:
    scp -P 2222 file.txt username@your_server_ip:/destination/
    > Nota: SCP usa -P (mayúscula) para el puerto, a diferencia de SSH que usa -p (minúscula).
    SFTP — Gestión Interactiva de Archivos
    SFTP proporciona un shell interactivo para explorar y gestionar archivos remotos:
    sftp username@your_server_ip
    Una vez conectado, usa estos comandos:
    # List remote files
    ls
    
    # List local files
    lls
    
    # Change remote directory
    cd /var/www/html
    
    # Change local directory
    lcd ~/Downloads
    
    # Upload a file
    put localfile.txt
    
    # Download a file
    get remotefile.txt
    
    # Exit
    bye
    Para un cliente SFTP gráfico, herramientas como FileZilla o Cyberduck se conectan vía SFTP y proporcionan una interfaz de arrastrar y soltar — ideal si prefieres no usar la línea de comandos para la gestión de archivos.
    8. Consejos para Solucionar Problemas de SSH
    
    
    
    
    Problema
    Causa Probable
    Solución
    
    
    
    
    Connection refused
    SSH no está ejecutándose, puerto incorrecto o firewall bloqueando
    Verifica systemctl status sshd, verifica el puerto, comprueba las reglas del firewall
    
    
    Connection timed out
    Firewall bloqueando la conexión
    Verifica que las reglas del firewall permitan tu puerto SSH
    
    
    Permission denied (publickey)
    Clave incorrecta, usuario incorrecto o clave no autorizada
    Comprueba los permisos de ~/.ssh/authorized_keys; verifica que se esté usando la clave correcta
    
    
    Host key verification failed
    Huella digital del servidor cambió
    Elimina la entrada antigua: ssh-keygen -R your_server_ip
    
    
    Too many authentication failures
    SSH intentó demasiadas claves
    Especifica la clave explícitamente: ssh -i ~/.ssh/id_ed25519 user@host
    
    
    Bloqueado después de cambio de configuración
    Configuración incorrecta de SSH
    Usa la consola de emergencia/VNC de tu proveedor de hosting para reparar sshd_config
    
    
    
    
    Habilitar Modo Detallado para Depuración
    Al solucionar problemas de conexión, añade -v (o -vvv para máxima verbosidad) a tu comando SSH:
    ssh -v username@your_server_ip
    Esto genera información detallada sobre el proceso de handshake, ayudándote a identificar exactamente dónde falla la conexión.
    9. Conclusión
    SSH es la columna vertebral de la administración remota de servidores. Dominarlo — desde conexiones básicas hasta autenticación basada en claves y endurecimiento de configuración — es una habilidad fundamental para cualquiera que gestione un entorno de alojamiento virtual.
    Para recapitular las mejores prácticas clave:
    
    ✅ Cambiar el puerto SSH predeterminado de 22 a un puerto no estándar
    ✅ Deshabilitar el inicio de sesión de root y usar un usuario dedicado sin privilegios de root con sudo
    ✅ Usar autenticación de clave SSH en lugar de contraseñas
    ✅ Deshabilitar la autenticación por contraseña una vez que las claves estén configuradas
    ✅ Mantener actualizado el software del cliente y servidor SSH
    ✅ Monitorear los registros de autenticación regularmente: tail -f /var/log/auth.log

    Ya sea que estés ejecutando un VPS con cPanel o administrando un Servidor Dedicado bare-metal, estas prácticas de SSH mantendrán tu entorno seguro y tu flujo de trabajo eficiente.

    Si buscas un entorno de alojamiento confiable donde tengas acceso SSH completo y control de root, explora Alojamiento VPS de AlexHost — con planes diseñados para desarrolladores, empresas y todo lo demás. Y si tus necesidades de infraestructura se extienden a seguridad SSL para tus dominios, no olvides consultar Certificados SSL para mantener tu tráfico web encriptado de extremo a extremo.

    *¿Tienes preguntas sobre la configuración de SSH o la administración de servidores? El equipo de soporte de AlexHost está disponible 24/7 para ayudarte a aprovechar al máximo tu entorno de alojamiento.*