🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo cambiar el puerto SSH en tu servidor Linux y mejorar la seguridad

Actualizado el 28 de noviembre de 2025

¿Por qué cambiar el puerto SSH y por qué es tan importante?

Cuando instalas un servidor Linux, el servicio SSH (Secure Shell) se configura por defecto para escuchar en el puerto 22. Este es el estándar mundial y, por desgracia, también es el primer lugar donde los atacantes automáticos (bots) intentan conectarse. Cada día, millones de bots escanean internet buscando servidores con el puerto 22 abierto para intentar adivinar contraseñas o explotar vulnerabilidades.

Cambiar el puerto SSH es una de las medidas de seguridad más sencillas y efectivas que puedes implementar. No es una solución mágica que te haga invulnerable, pero sí que reduce drásticamente el ruido de fondo de intentos de conexión no deseados. Piensa en ello como cambiar la cerradura de la puerta principal de tu casa: no hace la casa impenetrable, pero hace que los ladrones oportunistas pasen de largo.

En esta guía completa, te explicaré paso a paso cómo cambiar el puerto SSH en tu servidor Linux, qué precauciones debes tomar y cómo evitar quedarte fuera de tu propio servidor. Vamos a ello.

Preparativos antes de tocar nada: la regla de oro

Antes de modificar cualquier archivo de configuración, es fundamental que te prepares para el peor escenario posible: quedarte sin acceso a tu servidor. Esto puede pasar si cometes un error tipográfico en la configuración o si olvidas actualizar las reglas del firewall.

[WARNING]
Nunca cierres la sesión SSH actual hasta que hayas verificado que la nueva configuración funciona en una sesión paralela. Si algo sale mal y cierras la única sesión activa, podrías quedarte fuera de tu servidor de forma permanente si no tienes acceso físico o por consola (KVM/IPMI).

Aquí tienes una lista de comprobación antes de empezar:

  • Tienes acceso a la consola del proveedor (VPS o dedicado). Asegúrate de saber cómo acceder al panel de control de tu proveedor para poder usar la consola web si todo falla.
  • Tienes una copia de seguridad del archivo de configuración de SSH. Es un simple cp, pero te ahorrará dolores de cabeza.
  • Sabes usar un editor de texto en la terminal como nano o vim. Si no, te recomiendo nano por su sencillez.
  • Entiendes cómo funciona tu firewall (UFW, firewalld, iptables, etc.). Este es el punto más crítico, ya que si no abres el nuevo puerto, te bloquearás a ti mismo.

Paso 1: Acceder a tu servidor y hacer una copia de seguridad

Lo primero es conectarte a tu servidor como usuario root o con un usuario con permisos de sudo. Una vez dentro, vamos a hacer una copia de seguridad del archivo de configuración principal de SSH.

Ejecuta el siguiente comando:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

Este comando crea un archivo llamado sshd_config.backup en el mismo directorio. Si algo sale mal, puedes restaurar la configuración original fácilmente.

[TIP]
No confundas sshd_config con ssh_config. El primero es el del servidor (el daemon), el segundo es el del cliente. Nosotros siempre editaremos el del servidor.

Paso 2: Elegir un número de puerto adecuado

El número de puerto puede ser cualquier valor entre 1 y 65535. Sin embargo, hay algunas consideraciones:

  • Evita puertos comunes como 21 (FTP), 23 (Telnet), 25 (SMTP), 53 (DNS), 80 (HTTP), 443 (HTTPS). Aunque técnicamente puedes usarlos, es mala idea porque otros servicios podrían necesitarlos o confundirías a los programas.
  • Elige un puerto alto, por ejemplo, entre 1024 y 65535. Los puertos por debajo de 1024 requieren privilegios de root para ser usados, lo cual añade una capa extra de complejidad.
  • Usa un número memorable pero no obvio. Puertos como 2222, 22222 o 2022 son muy comunes y los atacantes ya los tienen en sus listas. Algo como 34891 es mucho más difícil de adivinar.

Mi recomendación personal: elige un puerto entre 20000 y 50000 que no tenga significado obvio para ti. Por ejemplo, si tu cumpleaños es el 14 de marzo de 1985, podrías usar 31485. Es fácil de recordar y difícil de adivinar.

Paso 3: Editar el archivo de configuración de SSH

Ahora vamos a editar el archivo sshd_config. Usaremos nano por su facilidad de uso:

sudo nano /etc/ssh/sshd_config

Dentro del archivo, busca la línea que dice #Port 22. Es posible que esté comentada (con un # al principio). Debes hacer dos cosas:

  1. Descomentar la línea (quitar el #).
  2. Cambiar el número 22 por el puerto que hayas elegido.

Quedará algo así:

Port 34891

[INFO]
Algunos sistemas operativos (como Ubuntu) pueden tener la línea Port 22 sin el símbolo #. Si es tu caso, simplemente cambia el número. Si no encuentras la línea, puedes añadirla al final del archivo.

Guarda los cambios con Ctrl+O, presiona Enter para confirmar y sal con Ctrl+X.

Paso 4: Actualizar las reglas del firewall (el paso más crítico)

Este es el momento en el que la mayoría de la gente se queda fuera de su servidor. Si tienes un firewall activo (y deberías tenerlo), necesitas permitir el tráfico en el nuevo puerto antes de reiniciar el servicio SSH.

Si usas UFW (Uncomplicated Firewall)

UFW es el firewall más común en Ubuntu y Debian. Ejecuta:

sudo ufw allow 34891/tcp

Si también quieres seguir permitiendo el puerto 22 temporalmente (para no quedarte fuera), puedes dejarlo abierto:

sudo ufw allow 22/tcp

Si usas firewalld (CentOS, Fedora, RHEL)

Los comandos son ligeramente diferentes:

sudo firewall-cmd --permanent --add-port=34891/tcp
sudo firewall-cmd --reload

Si usas iptables directamente

Esto es más avanzado, pero la regla sería:

sudo iptables -A INPUT -p tcp --dport 34891 -j ACCEPT

Y luego guardar las reglas con sudo service iptables save o el método que uses en tu distribución.

[WARNING]
No elimines la regla del puerto 22 todavía. La dejaremos activa hasta que hayamos verificado que podemos conectarnos por el nuevo puerto. Después podrás eliminarla.

Paso 5: Reiniciar el servicio SSH

Ahora es el momento de reiniciar el servicio SSH para que los cambios surtan efecto. El comando varía según el sistema:

  • Ubuntu/Debian: sudo systemctl restart sshd o sudo systemctl restart ssh
  • CentOS/RHEL/Fedora: sudo systemctl restart sshd
  • Sistemas antiguos: sudo service ssh restart

Después de reiniciar, el servicio debería estar escuchando en el nuevo puerto. Puedes verificarlo con:

sudo netstat -tlnp | grep sshd

O si netstat no está instalado, usa ss:

sudo ss -tlnp | grep sshd

Deberías ver algo como LISTEN 0 128 0.0.0.0:34891 o [::]:34891.

Paso 6: Probar la conexión con el nuevo puerto (¡sin cerrar la actual!)

Este es el momento de la verdad. Abre una nueva terminal en tu ordenador local (no cierres la que tienes abierta) e intenta conectarte con el nuevo puerto:

ssh -p 34891 usuario@tu-servidor.com

Si la conexión es exitosa, ¡enhorabuena! Ya has cambiado el puerto. Si el comando se queda colgado o te da un error de conexión, algo ha ido mal. Revisa los pasos anteriores, especialmente la configuración del firewall.

[TIP]
Si usas Windows, puedes usar PuTTY o la terminal de PowerShell. En PowerShell, el comando es el mismo: ssh -p 34891 usuario@tu-servidor.com.

Paso 7: Limpieza final y cierre del puerto antiguo

Una vez que hayas verificado que la conexión por el nuevo puerto funciona correctamente, puedes cerrar la sesión SSH antigua y eliminar la regla del firewall para el puerto 22.

Eliminar la regla del puerto 22 en UFW:

sudo ufw delete allow 22/tcp

En firewalld:

sudo firewall-cmd --permanent --remove-port=22/tcp
sudo firewall-cmd --reload

[INFO]
Si tu proveedor de hosting o VPS tiene un firewall externo (como un grupo de seguridad en AWS o una red virtual en DigitalOcean), también debes actualizarlo. Asegúrate de permitir el tráfico entrante en el nuevo puerto desde tu IP de confianza.

Configuraciones adicionales para maximizar la seguridad

Cambiar el puerto SSH es solo el primer paso. Para una seguridad realmente sólida, considera implementar estas medidas adicionales:

1. Desactivar el acceso root por contraseña

Es una mala práctica permitir que el usuario root se conecte directamente por SSH. Crea un usuario con privilegios sudo y desactiva el login root. En el archivo sshd_config, busca o añade:

PermitRootLogin no

2. Usar autenticación por clave pública

Las contraseñas son vulnerables a ataques de fuerza bruta. Las claves SSH son mucho más seguras. Genera un par de claves en tu ordenador local y copia la clave pública al servidor:

ssh-keygen -t ed25519 -a 100
ssh-copy-id -p 34891 usuario@tu-servidor.com

Después, en el servidor, desactiva la autenticación por contraseña:

PasswordAuthentication no

3. Limitar los usuarios que pueden conectarse

Puedes especificar qué usuarios tienen permitido acceder por SSH:

AllowUsers usuario1 usuario2

Esto reduce la superficie de ataque enormemente.

4. Implementar Fail2ban

Fail2ban es una herramienta que monitoriza los logs del sistema y bloquea automáticamente las IPs que intentan conectarse de forma repetitiva y fallida. Es una excelente red de seguridad adicional.

Preguntas frecuentes (FAQ)

¿Es seguro cambiar el puerto SSH?

Sí, es seguro y recomendable. No elimina la necesidad de otras medidas de seguridad, pero reduce significativamente los intentos de acceso no autorizado automatizados.

¿Qué pasa si olvido el nuevo puerto?

Si olvidas el puerto, puedes acceder a tu servidor a través de la consola web de tu proveedor (si la tienes) y mirar el archivo /etc/ssh/sshd_config para ver el número configurado.

¿Puedo usar el mismo puerto para otros servicios?

Técnicamente no. Cada servicio debe usar un puerto único en el servidor. Si intentas usar un puerto que ya está ocupado, SSH no se iniciará correctamente.

¿Debo cambiar el puerto en el cliente SSH también?

Sí, cada vez que te conectes deberás especificar el puerto con -p o configurarlo en el archivo de configuración del cliente (~/.ssh/config). Por ejemplo:

Host mi-servidor
    HostName tu-servidor.com
    User usuario
    Port 34891

¿HestiaCP (Syspanel) tiene alguna relación con esto?

Si estás usando un panel de control como Syspanel (anteriormente conocido como HestiaCP), ten en cuenta que su interfaz web se accede a través del puerto 2106. Cambiar el puerto SSH no afecta al panel de control, pero es importante que recuerdes que el acceso al panel es independiente del acceso SSH. Si bloqueas el puerto 2106 en tu firewall, no podrás acceder a Syspanel.

¿Qué hago si me he quedado fuera de mi servidor?

No entres en pánico. Usa la consola web de tu proveedor (KVM/IPMI) para acceder al servidor. Desde allí, puedes restaurar la configuración original con la copia de seguridad que hicimos:

sudo cp /etc/ssh/sshd_config.backup /etc/ssh/sshd_config
sudo systemctl restart sshd

Conclusión: un pequeño cambio, una gran mejora

Cambiar el puerto SSH es una tarea sencilla que cualquier administrador de sistemas debería hacer en cuanto recibe un servidor nuevo. Es como cambiar la cerradura de la puerta principal de tu casa: no es la única medida de seguridad que necesitas, pero es un primer paso fundamental.

Recuerda que la seguridad en profundidad es clave. Combina el cambio de puerto con autenticación por claves, desactivación del login root, Fail2ban y un buen firewall. Así tendrás un servidor mucho más robusto y resistente a ataques.

Si has seguido todos los pasos de esta guía, ahora mismo tu servidor está mucho más seguro que hace unos minutos. No olvides anotar el nuevo puerto en un lugar seguro y actualizar tus clientes SSH para que se conecten automáticamente.

[TIP FINAL]
Revisa los logs de tu servidor con sudo journalctl -u ssh o sudo tail -f /var/log/auth.log para ver los intentos de conexión. Te sorprenderá ver cómo los ataques automáticos en el puerto 22 desaparecen casi por completo después del cambio.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel