El blog de LiveCommerce

Un blog de comercio electrónico y tiendas online

Tutorial completo: Cambiar el puerto SSH y solucionar el error /run/sshd

Este tutorial te guía paso a paso para cambiar el puerto de conexión SSH en un servidor Linux, asegurarte de que esté escuchando correctamente y resolver el error típico:

Missing privilege separation directory: /run/sshd

Ideal para configuraciones minimalistas, VPS o contenedores.


✅ 1. Editar el archivo de configuración de SSH

Abre el archivo:

nano /etc/ssh/sshd_config

Busca esta línea:

#Port 22

Y cámbiala por:

Port 2222

(Quita el # si está comentado). Guarda y cierra.


✅ 2. Revisar si hay algún firewall bloqueando el puerto

Comprueba qué firewall tienes:


which ufw && ufw status
systemctl is-active firewalld
iptables -L -n

Si no hay respuesta en los tres casos, no tienes firewall activo. Si usas UFW o firewalld, abre el puerto:


# UFW
ufw allow 2222/tcp

# Firewalld
firewall-cmd --permanent --add-port=2222/tcp
firewall-cmd --reload

✅ 3. Reiniciar el servicio SSH


systemctl restart ssh
# o
systemctl restart sshd

⚠️ 4. Solución al error /run/sshd

Este error significa que el directorio temporal requerido por sshd no existe.

✔️ Solución inmediata:


mkdir -p /run/sshd
chmod 755 /run/sshd
systemctl restart ssh

? 5. Verificar que SSH está escuchando en el nuevo puerto

ss -tuln | grep 2222

Salida esperada:


LISTEN 0 128 0.0.0.0:2222 0.0.0.0:*  
LISTEN 0 128 [::]:2222   [::]:*

? 6. Probar conexión SSH desde otra máquina

ssh root@IP_DEL_SERVIDOR -p 2222

7. Hacer permanente la solución al error de /run/sshd

Para evitar que el error reaparezca tras reiniciar el sistema, crea un servicio systemd personalizado.

✏️ Crear el archivo de servicio:

nano /etc/systemd/system/fix-sshd-run-dir.service

Pega esto:

[Unit]
Description=Crear /run/sshd si no existe
Before=ssh.service
ConditionPathExists=!/run/sshd

[Service]
Type=oneshot
ExecStart=/bin/mkdir -p /run/sshd
ExecStartPost=/bin/chmod 755 /run/sshd

[Install]
WantedBy=multi-user.target

Recargar systemd y habilitar el servicio:


systemctl daemon-reexec
systemctl daemon-reload
systemctl enable fix-sshd-run-dir.service

✅ Resultado final

  • Puerto SSH cambiado con éxito a 2222.
  • Servicio SSH funcionando sin errores.
  • Conexión establecida correctamente desde otro cliente.
  • Solución persistente al problema /run/sshd.
Compártelo:

¿Tienes alguna consulta?

Si tienes alguna pregunta o sabes la respuesta sobre algún comentario, no dudes en contribuir.
Responderemos rápidamente.
Puedes utilizar etiquetas BBCode para escribir negrita, enlaces, imágenes, etc...
Más información en la página oficial de BBCOde http://www.bbcode.org/ Ejemplo:
[url=http://google.com]links[/url], [color=red]colores[/color] [b]negrita[/b]...

¿Has visto los videos en nuestro canal de Youtube?

En nuestro canal de Youtube publicamos periódicamente mejoras y funcionalidades del software de ecommerce.