# Hosts & Verbindungen

## Der Host-Editor

Drücken Sie **⌘N** für einen neuen Host oder tippen Sie einen vorhandenen Host
an, um ihn zu bearbeiten. Der Editor hat vier Tabs — **Verbindung**,
**erweitert**, **Weiterleitung**, **Snippets** — und eine
**verbinden**-Leiste. Auf dem iPhone erscheinen dieselben vier Abschnitte als
Chips — **Verbindung**, **erweitert**, **Tunnel**, **Snippets** —, wobei
Verbindungsfelder und Tunnelregeln vorgemerkt bleiben, bis Sie auf „Sichern“
tippen (andere Änderungen greifen sofort, wie auf dem iPad); der Editor ist
auf beiden Geräten derselbe.

Der Tab „Verbindung“ enthält die Grundlagen: **Name**, **Adresse**, **Port**
(1–65535), **Benutzer**, **Identität** (ein Key von Ihrer Seite
[Keys](https://bambouville.com/docs/de/keys/)) und **Passwort**. Ein hier eingetipptes Passwort gilt nur für
die Sitzung: Es wird ausschließlich für die laufende Sitzung behalten und nie
gespeichert. Die einzige Ausnahme ist ein Host, der über die
[Einrichtung in der Nähe](https://bambouville.com/docs/de/nearby-setup/) oder [Kontinuität](https://bambouville.com/docs/de/continuity/)
eingerichtet wurde und sich per Passwort authentifiziert — das Passwort, das
Sie einmal auf dem neuen Gerät eintippen, wird als gesicherte
Anmeldeinformation im Schlüsselbund dieses Geräts behalten, nie synchronisiert,
und der Editor kann es später ändern (beim Sichern wird das gespeicherte
Passwort ersetzt).

![Der Host-Editor mit seinen vier Tabs — Verbindung, erweitert, Weiterleitung, Snippets — sowie den Verbindungsfeldern und der Verbinden-Leiste.](https://bambouville.com/docs/assets/img/host-editor.png)

*Vier Tabs am oberen Rand und eine Verbinden-Leiste, die in jedem Tab unten verankert ist.*


## Transport: SSH oder Mosh

Jeder Host wählt einen Transport:

- **ssh** — eine einzige SSH-Verbindung; tmux-Tabs bleiben auf der
  Hauptsitzung.
- **mosh** — ein mosh-Terminal über UDP. Mosh hält Ihre Sitzung über den
  Wechsel zwischen WLAN ↔ Mobilfunk und über Ruhezustand/Aufwachen hinweg am
  Leben und fühlt sich auf verlustbehafteten Strecken flotter an. Es setzt
  voraus, dass `mosh-server` auf dem Host installiert ist. tmux-Tabs nutzen
  einen zweiten SSH-Seitenkanal. Die [mosh-Seite](https://bambouville.com/docs/de/mosh/) erzählt die ganze
  Geschichte, inklusive echtem Scrollback.

Der UDP-Verkehr von mosh kann Bastionen nicht durchqueren: Wenn Sie mosh über
einen [Jump-Host](#jump-hosts) verwenden und der mosh-Server nicht erreichbar
ist, sagt Tessera Ihnen das („mosh ist über die Jump-Kette nicht erreichbar
…“) und verbindet sich neu über SSH.

## Startmodi

- **Auto-tmux** — hängt sich an eine Host-eigene tmux-Sitzung mit dem
  deterministischen Namen `tessera-XXXXXXXX` an (oder legt sie an); der Name
  übersteht Neuinstallationen der App. Der Standard — und der Modus, der
  abgebrochene Verbindungen harmlos macht.
- **benanntes tmux** — hängt sich an einen tmux-Sitzungsnamen an, den Sie
  wählen; Namen mit ungültigen Zeichen fallen auf den automatisch abgeleiteten
  zurück.
- **eigen** — ein wörtlicher Startbefehl. Über ssh wird er an die Login-Shell
  gesendet, über mosh von `mosh-server new -- <command>` ausgeführt.

Was die tmux-Modi bringen, steht unter [tmux](https://bambouville.com/docs/de/tmux/); wie der Startmodus mit
Tunneln zusammenspielt, unter
[Portweiterleitung](https://bambouville.com/docs/de/port-forwarding/#mosh-und-weiterleitung).

## Jump-Hosts

Jeder gesicherte Host lässt sich als SSH-Bastion (ProxyJump) verwenden: Wählen
Sie ihn im Host-Editor aus. Ketten verschachteln sich — der eigene Jump-Host
des Jump-Hosts verlängert die Kette — und der Editor zeigt den daraus
entstehenden Pfad („a → b → host“) samt Warnungen für gebrochene Ketten.

- Jeder Hop authentifiziert sich unabhängig mit eigener Identität oder eigenem
  Passwort. Hops mit Passwort bekommen im Jump-Host-Abschnitt des Editors ein
  Feld **Passwort · \<Hop-Name\>**, das nur für die laufende Sitzung behalten
  wird; „verbinden“ bleibt deaktiviert, bis jeder Hop eines hat.
- Host-Key-Abfragen erscheinen pro Hop, die Bastion zuerst, und benennen
  jeweils den Endpunkt, der geprüft wird.
- Eine gebrochene Kette scheitert kontrolliert: Wurde ein Jump-Host gelöscht,
  warnt der abhängige Host in seinem Editor, und die Verbindung schlägt fehl,
  statt stillschweigend direkt zu gehen. Fehler benennen den Hop, aus dem sie
  stammen („Jump-Host \<Name\>: …“).
- In der [kostenlosen Stufe](https://bambouville.com/docs/de/unlimited-hosts/) belegt eine separat gesicherte
  Bastion einen eigenen Platz für gesicherte Hosts.

## Tab „Erweitert“

- **OS-Logo** — beim Verbinden automatisch erkannt oder manuell gesetzt (macos,
  ubuntu, debian, alpine, linux, raspbian).
- **Tags** und **Notizen** — für Ihre eigene Ordnung.
- **Umgebungsvariablen** — ein `KEY=value` pro Zeile; ein optional
  vorangestelltes `export ` wird entfernt. Werte werden unverändert an die
  entfernte Shell übergeben — `$HOME`, `$(…)` und Anführungszeichen wirken
  genau so, wie sie geschrieben sind.
- **Terminal-Hintergrund** — überschreibt den globalen
  [Hintergrund](https://bambouville.com/docs/de/appearance/) pro Host.

> Umgebungsvariablen und Startskripte laufen nur, wenn die tmux-Sitzung
> startet. Ändern Sie sie für einen Host, dessen tmux-Sitzung bereits
> existiert, beenden Sie diese Sitzung auf dem Server, damit die Änderungen
> greifen.

## Snippets

Der Tab „Snippets“ enthält ein **Startskript**: Befehle, die direkt nach dem
Verbinden gesendet werden (dieselbe tmux-Einschränkung von oben gilt).

## Wenn eine Verbindung hängt

Während eine Sitzung aufgebaut wird, benennt das Start-Overlay die Phase, in
der es steckt — **verbinde**, dann bei tmux-Hosts **starte tmux** (SSH) oder
**hänge tmux an** (mosh), dann **hänge Bereich an**. Kommt eine Phase etwa
zwölf Sekunden lang nicht voran, sagt das Overlay, welche Phase feststeckt
(„immer noch verbinde — der Handshake ist nicht abgeschlossen.“), und bietet
einen Ausweg an, statt weiterzudrehen:

- **Host bearbeiten** — öffnet den Host-Editor, wenn Adresse, Port oder Key das
  Problem sind,
- **erneut versuchen** — bricht den Versuch ab und verbindet von vorn,
- **zurück** — aufgeben und zu Ihren Hosts zurückkehren. Der Ausstieg aus einem
  hängenden Versuch trennt ihn vollständig — auf dem Server bleibt nichts
  laufen.

Der Timer läuft pro Phase, eine langsame Verbindung, die noch vorankommt, löst
ihn also nie aus. Kann tmux selbst nicht starten — es ist nicht installiert,
die Sitzung lässt sich nicht anlegen, oder die Dotfiles des Hosts starten beim
Login bereits selbst tmux —, setzt Tessera Sie in eine einfache Shell und zeigt
ein Banner, das genau sagt, was passiert ist, statt auf ein tmux zu warten, das
nie antworten wird.

![Das Start-Overlay hängt beim Verbinden: Die Phasenbeschriftung lautet „verbinde“, darunter steht der Name der tmux-Sitzung, eine Warnzeile lautet „immer noch verbinde — der Handshake ist nicht abgeschlossen.“, und darunter warten die Schaltflächen „Host bearbeiten“, „erneut versuchen“ und „zurück“.](https://bambouville.com/docs/assets/img/stall-notice.png)

*Zwölf Sekunden ohne Fortschritt: Das Overlay benennt die Phase und bietet einen Ausweg an.*

## Sitzungen

Tessera hält zu beliebigen Hosts mehrere gleichzeitige Sitzungen offen.
Auto-tmux-Hosts sind Singletons — eine tmux-Steuersitzung pro Host (bei
benanntem tmux pro Host und Sitzungsname) —, während Hosts mit eigenem Befehl
mehrere haben können („Name #2“, „Name #3“). Der Abschnitt **aktiv** in der
Seitenleiste listet jede Sitzung auf, beschriftet mit „Name (tmux)“,
„Name (tmux: Sitzungsname)“ oder „Name #N“, jeweils mit einer
Trennen-Schaltfläche. Auf dem iPhone ist dieselbe Liste der Tab
**Sitzungen**.

Wechseln Sie zwischen Sitzungen, indem Sie sie antippen, mit **⌘⇧K** /
**⌘⇧J** zu den Nachbarn gehen oder mit **⌘K** die Schnellwechsel-Palette
öffnen: Tippen Sie, um Sitzungen (zuletzt genutzte zuerst) und Agenten zu
filtern — stellen Sie der Eingabe ein `@` voran, um auf Agenten einzugrenzen.

## Sitzungswiederherstellung

**Einstellungen → Terminal → Start → frühere Verbindungen** steuert, was bei
einem Neustart passiert:

- **fragen** — zeigt einen Dialog „frühere Verbindungen wieder öffnen“ mit
  „immer wieder öffnen“ / „wieder öffnen“ / „jetzt nicht“.
- **immer** — verbindet stillschweigend neu.
- **nie** — startet leer.

Auf dem iPhone ersetzt ein einzelner Schalter **beim Start wiederherstellen**
den Auswahldialog. Nur Sitzungen zu gesicherten Hosts mit intaktem Key-Material
sind wiederherstellbar.

Die Rückkehr in den Vordergrund funktioniert genauso, nur klüger: Tessera
wartet, bis **jede** offene Sitzung ihren Zustand gemeldet hat, bevor es
entscheidet, was neu verbunden wird. Fallen mehrere Hosts gleichzeitig aus —
oder gibt eine mosh-Sitzung erst verspätet zu, dass sie tot ist —, wird jede
einzelne neu verbunden, keine bleibt liegen. Währenddessen zählt das
Start-Overlay den Rest mit („+2 weitere Sitzungen verbinden neu“).
Tessera ist bewusst eine Ein-Fenster-App (kein Multi-Scene auf dem iPad); die
Seitenleiste und die Palette — auf dem [iPhone](https://bambouville.com/docs/de/iphone/) die Tab-Leiste und
der Umschalter — sind Ihre Wege durch die App.
