SSH und unzuverlässige Leitungen

Axel Beckert

CCCZH / LUGS

abe@noone.org
http://noone.org/abe/

Motivation

SSH ist mühsam, falls

  • sich die IP ändert,
  • die Latenz sehr hoch ist und man schnell tippt, oder
  • wenn man den Laptop schlafen legt;

z.B. bei Verbindungen über

  • GSM, Satelliten-Link (SkyDSL, etc.),
  • wackeliges WLAN, oder
  • verstopfte Leitungen.

AutoSSH

  • Wrapper um SSH
  • Testet via zwei Tunnels zur Schleife (1x "-L", 1x "-R"), ob noch Daten durch die Verbindung gehen. Startet die SSH-Verbindung neu, falls keine Daten mehr durch den Tunnel gehen
  • Manuelles Neustarten mit <Enter>~. (SSH Escape Key)
  • Ideal zusammen mit GNU Screen (oder tmux): autossh -t host "screen -RD"
  • Abwechselnde Clients (z.B. für Screen-Sessions) problemlos möglich
  • Funktioniert mit OpenBSD, Linux, Solaris, Mac OS X, Cygwin, AIX und vermutlich allen anderen BSDs.

Mosh: Einführung

  • "A State-of-the-Art Good Old-Fashioned Mobile Shell"
  • Sagt Ausgabe anhand von Eingabe hervor, falls die Verbindung lagt (intelligentes "local echo"; deaktivierbar)
  • Nutzt SSH für Authentifizierung, Autorisierung, Starten des Mosh-Servers und Schlüsseltausch; honoriert .ssh/config
  • Nutzt untendrunter UDP: Änderung der Client-IP nicht relevant
  • GNU Screen oder tmux nicht notwendig, aber möglich

Mosh: Technik

  • Detach und Reattach implizit bzw. transparent, mehrere abwechselnde Clients nur mit Umständen möglich
  • State Synchronization Protocol (SSP): Für die Anzeige zu späte bzw. nicht mehr relevante Daten werden nicht übertragen.
  • Braucht ncurses, leert das Terminal beim Start ähnlich wie GNU Screen.
  • Unterstützt ausschliesslich UTF-8
  • Eigentliche Verbindung AES-128 (OCB Modus; OpenSSL oder eigene Implementation) verschlüsselt über UDP
  • Bisher wenig konstruktive Kritik an der Verschlüsselung

Mosh: Nachteile, FAQ und Zukunftsaussichten

  • Noch kein IPv6-Support. Braucht Support für Änderung der Server-IP. Das widerum braucht tiefgreifendere Änderungen.
  • Noch kein SSH-Agent-Forwarding.
  • (Noch) kein Port-Forwarding.
  • (Noch) kein Datei-Transfer.
  • Letztes Release März 2013, letzter Commit Januar 2014.

Mosh: Verfügbarkeit

  • Verfügbar für Debian (ab Wheezy, Squeeze Backports), Ubuntu (ab Precise), Fedora ab 15, Gentoo, Arch Linux, Slackware, Mageia 2, Exherbo, Meego (Nokia N9), FreeBSD Ports, pkgsrc (NetBSD, DragonFlyBSD, etc.), MacOS X (.pkg, Homebrew, MacPorts und fink), Cygwin
  • Experimenteller Android-Client auf IrssiConnectBot-Basis als .apk (nicht via Google Play)
  • iOS-Client mittlerweile im Bereich des Möglichen, nachdem Lizenz-Probleme (GPLv3 vs iTunes-Regeln) ausgeräumt wurden.

Links