Conéctate por SSH y rsync a través del bastión
Una vez cerrado el puerto 22 al mundo, llega a tus servidores con SSH y rsync nativos a través del bastión — registra una clave y añade un solo flag de salto a los comandos que ya usas.
Después de cerrar el puerto SSH con un bastión, el
puerto 22 deja de estar abierto a internet. Tu shell del día a día sigue funcionando — el
Terminal del navegador viaja por la conexión saliente del agente y no necesita ningún puerto
entrante. Pero las herramientas nativas de línea de comandos (ssh, rsync, scp, el Remote SSH de
tu IDE) llegan al host por el puerto 22, que ahora está cerrado para todos menos el bastión.
El arreglo es pequeño: sigue usando los mismos comandos que ya conoces y enrútalos por el bastión con
un flag extra. El bastión es un jump host solo-túnel — reenvía la conexión a tu servidor pero
nunca ve la contraseña del host ni termina tu SSH. Entras al host con tu propia clave o contraseña,
de extremo a extremo. Esta guía muestra el antes/después de ssh y rsync para que te conectes a
tus propios servidores por tu cuenta.
Antes de empezar
- Ya restringiste el SSH al bastión (o estás por hacerlo). Si el puerto 22 sigue abierto al mundo, todavía no necesitas el bastión — conéctate directo.
- Tienes una terminal con el cliente OpenSSH (
ssh, incluido en macOS, Linux y Windows 10+).- Tu despliegue opera un bastión. Si la página Claves del bastión no está en tu barra lateral, consulta con tu administrador.
La regla que a todos se les escapa
Cuando te conectas a través del bastión, el destino final debe ser la dirección IP de tu servidor — no su hostname ni su FQDN.
El bastión solo abre un túnel hacia los servidores de tu cuenta, y los identifica por IP. Si le
pasas un hostname como servidor.ejemplo.com, no tiene contra qué compararlo y rechaza abrir el
canal (administratively prohibited). Pásale la IP y el túnel abre.
Encuentras la IP de cada servidor en el panel, en la cabecera de su vista. Sigue usando el destino
normal del puerto 22 (root@…, tu propio usuario, etc.) — lo único que cambia es la dirección, de
un nombre a una IP.
El jump host sí sigue siendo un nombre —
jump@b1.centralhost.sh. Es el servidor que está detrás el que se direcciona por IP.
Paso 1 — Registra una clave del bastión
El bastión es solo por clave — nunca acepta una contraseña para el salto en sí, aunque tu servidor use login por contraseña. Así que antes de nada, registra la mitad pública de una clave SSH. Esta es la clave que te lleva hasta el bastión; entrar al servidor que está detrás es aparte (tu propia clave o contraseña).
- Abre Claves del bastión desde la barra lateral.
- Dale una Etiqueta a la clave (p. ej.
laptop,teléfono de guardia). - Elige cómo añadirla:
- Pegar clave — pega una clave pública
ssh-ed25519 …existente. - Subir .pub — elige un archivo
.pub. - Crear clave nueva — el navegador genera un par Ed25519 por ti.
- Pegar clave — pega una clave pública

Si elegiste Crear clave nueva, pulsa Generar par de claves. El navegador crea el par localmente y muestra la clave privada una sola vez — descárgala y guárdala bien. Nunca recibimos ni conservamos una copia.

Guarda el archivo descargado en ~/.ssh/ (por ejemplo ~/.ssh/centralhost-bastion) y ajusta sus
permisos:
mv ~/Downloads/laptop.pem ~/.ssh/centralhost-bastion
chmod 600 ~/.ssh/centralhost-bastion
La clave nueva aparece en la lista con un Último uso de Nunca. Es lo esperado — se vuelve una marca de tiempo la primera vez que te conectes por el bastión.
Paso 2 — Conéctate por SSH
Estos son los comandos que usas hoy, mientras el puerto 22 está abierto — y los mismos comandos
enrutados a través del bastión. En todos los casos el cambio es el mismo: añade -J jump@b1.centralhost.sh y cambia el hostname por la IP del servidor.
Conectándote hoy (directo)
Con clave:
ssh -i ~/.ssh/id_ed25519 root@servidor.ejemplo.com
Con contraseña (te la pide tras pulsar Enter):
ssh root@servidor.ejemplo.com
Lo mismo, a través del bastión
Con clave — -i sigue apuntando a tu clave del host; el salto al bastión usa la clave del
bastión del Paso 1:
ssh -J jump@b1.centralhost.sh -i ~/.ssh/id_ed25519 root@<ip-del-servidor>
Con contraseña — el salto al bastión igual se autentica con tu clave registrada, y luego el servidor te pide su contraseña:
ssh -J jump@b1.centralhost.sh root@<ip-del-servidor>
Reemplaza <ip-del-servidor> por la IP del servidor que aparece en el panel. Para que ssh presente
tu clave del bastión en el salto, asegúrate de que esté cargada — añádela a tu agente (ssh-add ~/.ssh/centralhost-bastion) o fíjala por host en tu configuración SSH (siguiente paso).
Hazlo permanente con ~/.ssh/config
Teclear el flag de salto cada vez cansa, y un bloque de configuración SSH además te deja darle a cada
salto su propia clave. Añade esto una vez a ~/.ssh/config:
Host centralhost-bastion
HostName b1.centralhost.sh
User jump
IdentityFile ~/.ssh/centralhost-bastion
IdentitiesOnly yes
Host mi-servidor
HostName <ip-del-servidor> # la IP del servidor, nunca su hostname
User root
ProxyJump centralhost-bastion
IdentityFile ~/.ssh/id_ed25519 # tu clave del host; omite esta línea para login por contraseña
Ahora conectarte es solo:
ssh mi-servidor
Paso 3 — Transfiere archivos con rsync
rsync corre sobre el mismo transporte SSH, así que aplica la misma regla. Le pasas a rsync el
comando SSH con -e, añades ahí el flag de salto y apuntas a la IP del servidor.
Sincronizando hoy (directo)
Con clave:
rsync -avz -e "ssh -i ~/.ssh/id_ed25519" ./public/ root@servidor.ejemplo.com:/var/www/site/
Con contraseña:
rsync -avz ./public/ root@servidor.ejemplo.com:/var/www/site/
Lo mismo, a través del bastión
Con clave:
rsync -avz -e "ssh -J jump@b1.centralhost.sh -i ~/.ssh/id_ed25519" ./public/ root@<ip-del-servidor>:/var/www/site/
Con contraseña:
rsync -avz -e "ssh -J jump@b1.centralhost.sh" ./public/ root@<ip-del-servidor>:/var/www/site/
Si añadiste el bloque de ~/.ssh/config del Paso 2, rsync lo hereda — sin -e, y reutilizas el
mismo alias mi-servidor (que ya resuelve a la IP y al jump host correcto):
rsync -avz ./public/ mi-servidor:/var/www/site/
El mismo patrón cubre scp (scp -J jump@b1.centralhost.sh archivo root@<ip-del-servidor>:/ruta/) y los plugins Remote-SSH de los IDE — todos leen ~/.ssh/config, así
que en cuanto funciona el alias, funcionan ellos.
Solución de problemas
administratively prohibited: open failed— apuntaste al servidor por hostname en vez de su IP, o el servidor no está en el alcance de tu cuenta. Usa la IP que muestra el panel.Permission denied (publickey)en el salto — el bastión no recibió tu clave registrada. Confirma que esté cargada (ssh-add -l) o fijada conIdentityFile+IdentitiesOnly yesen la entradaHost …bastion, y que su huella coincida con la de la página Claves del bastión.- Te pide una contraseña inesperada — ese prompt es el del servidor (tu propia auth), no el del bastión. El bastión nunca pide contraseña; solo acepta tu clave.
- Sigue agotándose el tiempo en el puerto 22 — confirma que el SSH esté de verdad restringido al bastión (Firewall · Modo bastión dice Solo bastión). Si todavía dice Abierto al mundo, conéctate directo — aún no necesitas el bastión.
- Último uso sigue diciendo Nunca — tu conexión no llegó al bastión. Revisa de nuevo el flag de salto y la clave del bastión; un salto exitoso lo cambia a una marca de tiempo.