bambouville

mosh

Mosh hält eine Sitzung am Leben, wenn das Netz nicht mitspielt: von WLAN auf Mobilfunk wechseln, den Deckel zuklappen, aus der Reichweite laufen — neu verbinden, und die Sitzung ist noch da. Tessera verbindet das mit etwas, das kein anderer mosh-Client auf iOS bietet: echtem Scrollback.

Mosh setzt voraus, dass mosh-server auf dem Host installiert ist und die UDP-Ports 60000–61000 standardmäßig offen sind. Wählen Sie es pro Host in der Transport-Einstellung des Host-Editors.

Roaming

Eine mosh-Sitzung hängt an Ihrer Identität, nicht an Ihrem Netzwerkpfad. Tessera bleibt über Sprünge zwischen WLAN ↔ Mobilfunk, Adresswechsel und Ruhezustand/Aufwachen hinweg angehängt — die Sitzung macht einfach dort weiter, wo die Pakete aufgehört haben. Über ein VPN oder ein Tailnet funktioniert das genauso; mosh braucht nur UDP, um den Server zu erreichen.

Echtes Scrollback

Standard-mosh hat kein Scrollback — es synchronisiert konstruktionsbedingt nur den sichtbaren Bildschirm, alles, was hinausscrollt, wird also nie gesendet. Jeder andere iOS-mosh-Client erbt diese Grenze und verweist Sie auf den Copy-Mode von tmux.

Tessera synthetisiert die Historie stattdessen. In einer mosh-Sitzung mit tmux läuft das Terminal über UDP, während ein zweiter SSH-Seitenkanal mit tmux spricht; beim Hochscrollen holt Tessera die echte Historie über diesen Kanal und zeigt sie an Ort und Stelle — durchsuchbar mit Im Terminal suchen, auswählbar, vollständig.

Eine mosh-Sitzung in Tessera, zurückgescrollt durch ein langes git log mit vollständig dargestellten Commit-Nachrichten und Diffstats, darunter die sichtbare Shell-Eingabeaufforderung.
Eine mosh-Sitzung, tief in ein git log zurückgescrollt — Historie, die Standard-mosh verworfen hätte.

Wie es sich verhält, während Sie lesen:

  • Beim Hochscrollen erscheint die Historie eingefroren an Ort und Stelle — neue Ausgabe reißt Sie nicht wieder nach unten.
  • Die Rückkehr nach unten (oder Tippen) blendet die Überlagerung aus und zeigt wieder den aktuellen Live-Bildschirm.
  • Ein kräftiger Wisch läuft weiter: Die erste Seite lädt sofort, der Rest der Historie strömt dahinter nach — bis zur vom Server vorgehaltenen Tiefe.

Was es braucht

  • Einen tmux-Startmodus. Die Scrollback-Synthese funktioniert mit Sitzungen im Modus Auto-tmux und benanntes tmux (Auto-tmux ist der Standard). Ein mosh-Host, der mit einem eigenen Befehl gestartet wird, hat kein tmux, das man fragen könnte, und scrollt daher wie Standard-mosh.
  • Historie auf dem Server. Die Tiefe ist durch das history-limit von tmux auf dem Server begrenzt — Tessera kann nur zeigen, was tmux vorgehalten hat.
  • Den primären Bildschirm. Vollbild-Programme wie vim, less und htop regeln das Scrollen selbst; Tessera reicht Ihre Scroll-Geste als Eingabe an sie weiter, wie es jedes Terminal tut.

Mosh und alles andere

Derselbe SSH-Seitenkanal, der die Historie holt, trägt bei mosh-Hosts auch tmux-Fenster & Bereiche und die Portweiterleitung, und das Dateien-Panel öffnet seine eigene SSH-Brücke — Dateiübertragungen und Tunnel funktionieren also unter mosh und einfachem SSH gleich.

Eine Einschränkung: mosh-UDP kann keinen SSH-Jump-Host durchqueren. Bei einem Host mit Jump-Kette versucht Tessera zuerst mosh und fällt auf SSH zurück, wenn der Server über UDP nicht erreichbar ist. Ein Ziel, das ohnehin über UDP erreichbar ist — etwa über ein VPN oder ein Tailnet —, läuft weiter als mosh.