# Conectarse por SSH sin abrir puertos: el poder discreto de Cloudflared

Conectarse por SSH sin abrir puertos: el poder discreto de Cloudflared
Tabla de Contenidos

Hablar de accesos remotos a servidores suele ser como discutir sobre seguros de moto en Venezuela: todos tienen una opinión, pero pocos lo hacen realmente bien. Exponer el puerto 22 al mundo es como dejar el portón abierto de madrugada. En esta guía, te muestro cómo aprovechar ‘la herramienta de Cloudflare’, para montar un túnel SSH sin abrir ni un puerto al exterior. Y no, esto no es un arroz con mango.

Por qué usar ‘cloudflared’ para SSH?

Porque la seguridad no se negocia.!!! Usando ‘cloudflared’, el acceso se enruta a través de un túnel cifrado que autentica contra Cloudflare Access. Es como tener una puerta blindada con reconocimiento facial, pero sin tener que comprar gadgets exóticos. Además, no necesitas cambiar tu infraestructura ni pelear con reglas de firewall.

Paso 1: instalar cloudflared en el servidor

Terminal window
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb

Paso 2: login y creación del túnel

Terminal window
cloudflared tunnel login
cloudflared tunnel create cesarlead-tunel-ssh

Guarda el ID del túnel porque lo usarás bastante. Piensa en él como la cédula del túnel.

Paso 3: configurar ~/.cloudflared/config.yml

tunnel: TU_TUNNEL_ID
credentials-file: /root/.cloudflared/TU_TUNNEL_ID.json
ingress:
- hostname: ssh.cesarlead.com
service: ssh://localhost:22
- service: http_status:404

Este archivo define cómo se enrutan las solicitudes. Aquí decimos: si alguien llega a ssh.cesarlead.com, reenvíalo al puerto 22 local. Si viene algo raro, devuélvele un 404 como quien dice: “aquí no es bro!!!”.

Paso 4: validar la config y conectar el dominio

Terminal window
cloudflared tunnel ingress validate
cloudflared tunnel route dns TU_TUNNEL_ID ssh.cesarlead.com

Esto amarra el subdominio con el túnel. Como quien amarra el mecate del toldo antes de que empiece a llover.

Paso 5: ejecutar el túnel (modo manual)

Terminal window
cloudflared tunnel --config ~/.cloudflared/config.yml run

Paso 6: configurar tu cliente SSH (tu maquina)

Agrega esto a ~/.ssh/config:

Host ssh.cesarlead.com
User root
Port 22
ProxyCommand cloudflared access ssh --hostname %h
IdentityFile ~/.ssh/id_rsa

Y ya estarás listo para conectarte sin abrir puertos. Como entrar a una fiesta VIP con lista de invitados.

Paso 7: automatizar con systemd

Creamos el servicio para que el túnel se levante al iniciar el sistema:

/etc/systemd/system/cloudflared-tunnel.service

[Unit]
Description=Cloudflared Tunnel
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/cloudflared tunnel --config /root/.cloudflared/config.yml run
User=root
[Install]
WantedBy=multi-user.target

Y lo activamos:

Terminal window
sudo systemctl daemon-reload
sudo systemctl enable --now cloudflared-tunnel

Paso 8: actualizar cloudflared con elegancia

Creamos el servicio:

/etc/systemd/system/cloudflared-update.service

[Unit]
Description=Update Cloudflared
After=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/cloudflared update
User=root

Y su temporizador:

/etc/systemd/system/cloudflared-update.timer

[Unit]
Description=Run Cloudflared update every day
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target

Luego:

Terminal window
sudo systemctl daemon-reload
sudo systemctl enable --now cloudflared-update.timer

Verificaciones importantes

Para ver si la actualización funciona:

Terminal window
sudo systemctl start cloudflared-update
sudo journalctl -u cloudflared-update --no-pager --lines=50

Para ver si el túnel sobrevivió un reinicio:

Terminal window
sudo systemctl status cloudflared-tunnel

Asi que muchachones, implementar SSH por túnel con ‘cloudflared’ es como ver el Relámpago del Catatumbo desde la orilla: impresionante!!!. Con esta solución, te libras de puertos abiertos, te blindas con la infraestructura de Cloudflare y mantienes el control desde el primer ping.

Ya sabes, la próxima vez que te digan que necesitan conectarse por SSH a un servidor remoto, puedes responder con confianza: “tranquilo, eso lo armamos sin abrir ni una rendija”. Y si te preguntan cómo, les mandas este post, que ya está curado como sancocho dominguero! Activos!!!

Foto Cesar Fernandez

¿Lo rompiste? ¿Lo mejoraste?

Gracias por llegar hasta el final. Escribo estos posts para organizar mis propias ideas y, con suerte, para ahorrarle a alguien más el dolor de cabeza que yo ya pasé. Me encuentras en LinkedIn o puedes ver más de mi trabajo en GitHub.


Más Artículos