# Hosts y conexiones

## El editor de hosts

Pulsa **⌘N** para un host nuevo, o toca un host existente para editarlo. El
editor tiene cuatro pestañas — **conexión**, **avanzado**, **reenvío**,
**fragmentos** — y una barra de **conectar**. En el iPhone las mismas cuatro
secciones aparecen como fichas — **conexión**, **avanzado**, **túneles**,
**fragmentos** — donde los campos de conexión y las reglas de túneles quedan
en espera hasta que tocas guardar (los demás cambios se aplican de inmediato,
igual que en el iPad); el editor es el mismo en ambos dispositivos.

La pestaña de conexión contiene lo básico: **nombre**, **dirección**,
**puerto** (1–65535), **usuario**, **identidad** (una clave de tu página de
[claves](https://bambouville.com/docs/es/keys/)) y **contraseña**. Una contraseña que escribas aquí es de
ámbito de sesión: se conserva solo durante la sesión activa y nunca se
guarda. La única excepción es un host configurado mediante la
[configuración cercana](https://bambouville.com/docs/es/nearby-setup/) o la [continuidad](https://bambouville.com/docs/es/continuity/)
que se autentica por contraseña — la contraseña que escribes una sola vez en
el dispositivo nuevo se conserva como credencial guardada en el llavero de
este dispositivo, nunca se sincroniza, y el editor puede cambiarla más tarde
(al guardar se reemplaza la contraseña almacenada).

![El editor de hosts con sus cuatro pestañas — conexión, avanzado, reenvío, fragmentos — con los campos de conexión y la barra de conectar.](https://bambouville.com/docs/assets/img/host-editor.png)

*Cuatro pestañas arriba, y una barra de conectar fijada en la parte inferior de todas las pestañas.*


## Transporte: SSH o Mosh

Cada host elige un transporte:

- **ssh** — una sola conexión SSH; las pestañas de tmux se quedan en la
  sesión principal.
- **mosh** — un terminal mosh sobre UDP. Mosh mantiene la sesión viva a
  través de la itinerancia wifi ↔ datos móviles y del reposo/activación, y se
  siente más ágil en enlaces con pérdidas. Requiere `mosh-server` instalado
  en el host. Las pestañas de tmux usan un segundo canal lateral SSH. La
  [página de mosh](https://bambouville.com/docs/es/mosh/) cuenta la historia completa, incluido el
  historial real.

El tráfico UDP de mosh no puede atravesar bastiones: si usas mosh a través de
un [host de salto](#hosts-de-salto) y el servidor mosh es inalcanzable,
Tessera te lo dice («mosh es inalcanzable a través de la cadena de saltos…»)
y vuelve a conectar por SSH.

## Modos de inicio

- **tmux automático** — se conecta a (o crea) una sesión de tmux propia del
  host con un nombre determinista `tessera-XXXXXXXX`, recordado incluso si
  reinstalas la app. Es el modo por omisión, y el que hace inofensivas las
  conexiones caídas.
- **tmux con nombre** — se conecta a un nombre de sesión de tmux que eliges
  tú; los nombres con caracteres no válidos vuelven al derivado
  automáticamente.
- **personalizado** — un comando de inicio literal. Por ssh se envía al shell
  de inicio de sesión; por mosh lo ejecuta `mosh-server new -- <command>`.

Consulta [tmux](https://bambouville.com/docs/es/tmux/) para ver qué aportan los modos de tmux, y
[reenvío de puertos](https://bambouville.com/docs/es/port-forwarding/#mosh-y-el-reenvío) para saber cómo
interactúa el modo de inicio con los túneles.

## Hosts de salto

Cualquier host guardado puede usarse como bastión SSH (ProxyJump): elígelo en
el editor de hosts. Las cadenas se anidan — el propio host de salto del host
de salto alarga la cadena — y el editor muestra la ruta resultante
(«a → b → host») con avisos para las cadenas rotas.

- Cada salto se autentica de forma independiente con su propia identidad o
  contraseña. Los saltos con contraseña reciben un campo
  **contraseña · \<nombre del salto\>** en la sección de hosts de salto del
  editor, conservado solo durante la sesión activa; conectar queda desactivado
  hasta que cada salto tenga la suya.
- Las preguntas de clave de host aparecen por salto, primero el bastión, y
  cada una nombra el endpoint que se verifica.
- Una cadena rota falla de forma segura: si se eliminó un host de salto, el
  host dependiente lo avisa en su editor y la conexión falla en lugar de ir
  directa en silencio. Los errores nombran el salto del que proceden
  («host de salto \<nombre\>: …»).
- En el [nivel gratuito](https://bambouville.com/docs/es/unlimited-hosts/), un bastión guardado por
  separado ocupa su propio hueco de host guardado.

## La pestaña avanzado

- **logotipo del SO** — detectado automáticamente al conectar, o fijado a
  mano (macos, ubuntu, debian, alpine, linux, raspbian).
- **etiquetas** y **notas** — para tu propia organización.
- **variables de entorno** — un `KEY=value` por línea; se elimina un
  `export ` inicial opcional. Los valores se pasan tal cual al shell remoto —
  `$HOME`, `$(…)` y las comillas funcionan como se escriben.
- **fondo del terminal** — una anulación por host del
  [fondo](https://bambouville.com/docs/es/appearance/) global.

> Las variables de entorno y los fragmentos de inicio solo se ejecutan cuando
> arranca la sesión de tmux. Si los cambias para un host cuya sesión de tmux
> ya existe, cierra esa sesión en el servidor para aplicar los cambios.

## Fragmentos

La pestaña de fragmentos contiene un **fragmento de inicio**: comandos
enviados justo después de conectar (aplica la misma advertencia de tmux de
arriba).

## Cuando una conexión se atasca

Mientras una sesión arranca, la superposición de inicio nombra la etapa en la
que está — **conectando**, luego para los hosts con tmux **iniciando tmux**
(SSH) o **conectando a tmux** (mosh), y después **conectando al panel**. Si
una etapa no avanza durante unos doce segundos, la superposición dice qué
etapa está atascada («sigue en conectando: el handshake no ha terminado.») y
ofrece una salida en lugar de girar sin fin:

- **editar el host** — abre el editor de hosts, para cuando el problema es la
  dirección, el puerto o la clave,
- **reintentar** — desmonta el intento y vuelve a conectar desde cero,
- **atrás** — abandona y vuelve a tus hosts. Salir de un intento atascado lo
  desconecta por completo — no queda nada en ejecución en el servidor.

El temporizador es por etapa, así que una conexión lenta que sigue avanzando
nunca lo dispara. Si tmux en sí no puede arrancar — no está instalado, la
sesión no consigue iniciarse o los dotfiles del host ya lanzan tmux al
iniciar sesión — Tessera te deja en un shell simple con un aviso que dice
exactamente qué pasó, en lugar de esperar a un tmux que nunca responderá.

![La superposición de inicio atascada al conectar: el rótulo de la etapa dice conectando, con el nombre de la sesión de tmux debajo, una línea de aviso dice sigue en conectando: el handshake no ha terminado., y abajo esperan los botones de editar el host, reintentar y atrás.](https://bambouville.com/docs/assets/img/stall-notice.png)

*Doce segundos sin avanzar: la superposición nombra la etapa y ofrece una salida.*

## Sesiones

Tessera mantiene abiertas varias sesiones simultáneas con cualquier host. Los
hosts de tmux automático son únicos — una sesión de control de tmux por host
(por host y nombre de sesión con tmux con nombre) — mientras que los hosts
con comando personalizado pueden tener varias («nombre #2», «nombre #3»). La
sección **activas** de la barra lateral
lista todas las sesiones, etiquetadas «nombre (tmux)», «nombre (tmux:
nombre-de-sesión)» o «nombre #N», cada una con un botón de desconexión. En el
iPhone, la misma lista es la pestaña **sesiones**.

Cambia entre sesiones tocándolas, recorriendo las vecinas con **⌘⇧K** /
**⌘⇧J**, o abriendo la paleta de cambio rápido de **⌘K**: escribe para
filtrar sesiones (las más recientes primero) y agentes — antepón `@` a la
consulta para acotarla a los agentes.

## Restauración de sesiones

**ajustes → terminal → inicio → conexiones anteriores** controla qué ocurre
en un arranque nuevo:

- **preguntar** — muestra una hoja de «reabrir las conexiones anteriores» con
  «reabrir siempre» / «reabrir» / «ahora no».
- **siempre** — reconecta en silencio.
- **nunca** — arranca limpio.

En el iPhone, la hoja de elección se sustituye por un único conmutador
**restaurar al abrir**. Solo son restaurables las sesiones de hosts guardados
con material de clave intacto.

Volver al primer plano funciona igual pero con más cabeza: Tessera espera a
que **todas** las sesiones abiertas informen de su estado antes de decidir
qué reconectar, de modo que cuando varios hosts caen a la vez — o una sesión
mosh admite tarde que murió — cada una se reconecta, ninguna se queda tirada.
Mientras tanto, la superposición de inicio cuenta las restantes («+2 sesiones
más reconectando»).
Tessera es deliberadamente de ventana única (sin multiescena en el iPad); la
barra lateral y la paleta — la barra de pestañas y el selector en el
[iPhone](https://bambouville.com/docs/es/iphone/) — son la manera de moverse.
