# mosh — Roaming-fähige Remote-Shell über UDP

> Praxis-Guide zu mosh — latenztolerante SSH-Alternative für instabile Verbindungen, Netzwechsel und mobiles Arbeiten mit UDP-basiertem Roaming.

Source: https://www.jpkc.com/db/cheatsheets/networking/mosh/

<!-- PROSE:intro -->
mosh ist eine latenztolerante Alternative zu SSH für instabile Verbindungen: Die Sitzung bleibt aktiv, wenn du das Netzwerk wechselst, den Laptop in den Schlaf versetzt oder dich durch schlechte WLAN-Zonen bewegst. Nach dem initialen SSH-Handshake wechselt mosh auf UDP – Netzwechsel und kurze Verbindungsabbrüche werden transparent überbrückt. Dank Local-Echo reagiert dein Terminal sofort, selbst bei hoher Latenz. Das macht mosh zur ersten Wahl für Remote-Arbeit auf Mobilfunk, Zug-WLAN oder VPN-Verbindungen.
<!-- PROSE:intro:end -->

## Grundlegende Verwendung

`mosh <user>@<host>` — Verbindet mit einem Remote-Host (wie ssh).

```bash
mosh admin@server.example.com
```

`mosh <host>` — Verbindet mit dem aktuellen Benutzernamen.

```bash
mosh server.example.com
```

`mosh --ssh='ssh -p <port>' <user>@<host>` — Nutzt einen eigenen SSH-Port für den initialen Verbindungsaufbau.

```bash
mosh --ssh='ssh -p 2222' admin@server.example.com
```

`mosh --ssh='ssh -i <key>' <user>@<host>` — Verwendet einen bestimmten SSH-Identitätsschlüssel.

```bash
mosh --ssh='ssh -i ~/.ssh/id_ed25519' admin@server
```

## Port & Netzwerk

`mosh -p <port> <user>@<host>` — Verwendet einen bestimmten UDP-Port für den mosh-Datenverkehr.

```bash
mosh -p 60001 admin@server
```

`mosh -p <start>:<end> <user>@<host>` — Gibt einen UDP-Port-Bereich an.

```bash
mosh -p 60000:60010 admin@server
```

`mosh --bind-server=<addr> <user>@<host>` — Bindet den mosh-Server an eine bestimmte IP-Adresse.

```bash
mosh --bind-server=0.0.0.0 admin@server
```

## Server-Optionen

`mosh --server=<path> <user>@<host>` — Gibt den Pfad zum mosh-Server auf dem Remote-Host an.

```bash
mosh --server=/usr/local/bin/mosh-server admin@server
```

`mosh --server='mosh-server new -l LANG=en_US.UTF-8' <host>` — Setzt das Locale auf dem Remote-mosh-Server.

```bash
mosh --server='mosh-server new -l LANG=en_US.UTF-8' admin@server
```

`mosh --predict=<mode> <user>@<host>` — Setzt den Vorhersage-Modus (adaptive, always, never, experimental).

```bash
mosh --predict=always admin@server
```

## Sitzungsverwaltung

`Ctrl+^ .` — Trennt die mosh-Sitzung (wie ssh ~.).

```bash
Press Ctrl+^ then .
```

`mosh <host> -- tmux a` — Verbindet und hängt sich an eine laufende tmux-Sitzung.

```bash
mosh admin@server -- tmux a
```

`mosh <host> -- screen -r` — Verbindet und hängt sich an eine screen-Sitzung.

```bash
mosh admin@server -- screen -r
```

## Mosh vs. SSH

`mosh <host>` — Überlebt Netzwechsel, Sleep/Wake-Zyklen und WLAN-Roaming.

```bash
mosh admin@server (keeps working after laptop sleep)
```

`mosh <host>` — Nutzt UDP nach dem initialen SSH-Handshake (robuster bei Paketverlusten).

```bash
mosh admin@server (uses UDP port 60000+ after SSH auth)
```

`mosh <host>` — Local-Echo: zeigt Tastenanschläge sofort an, auch bei langsamen Verbindungen.

```bash
mosh admin@server (responsive even on 500ms latency)
```

`ssh <host>` — SSH verwenden, wenn Port-Forwarding, X11 oder ein SOCKS-Proxy benötigt wird (mosh unterstützt diese Features nicht).

```bash
ssh -L 8080:localhost:80 admin@server (port forwarding needs ssh)
```

<!-- PROSE:outro -->
## Fazit

mosh ersetzt SSH nicht vollständig, aber für mobiles Arbeiten und instabile Verbindungen ist es die überlegene Wahl. Kombiniere es mit tmux oder screen, um Sitzungen auch nach echten Verbindungsabbrüchen nahtlos fortzusetzen. Wer oft im Zug, im Café oder per Mobilfunk arbeitet, sollte mosh dauerhaft in seinen Workflow integrieren.

## Weiterführende Links

- [Mosh – Wikipedia](https://en.wikipedia.org/wiki/Mosh_(software)) – Hintergrund und Geschichte (englisch)
- [mosh.org – offizielle Website](https://mosh.org/) – Projektseite und Dokumentation (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [ssh](https://www.jpkc.com/db/cheatsheets/networking/ssh/) – sichere Remote-Shell mit Verschlüsselung und Port-Forwarding
- [scp](https://www.jpkc.com/db/cheatsheets/networking/scp/) – Dateien sicher über SSH auf Remote-Hosts kopieren
- [ssh-keygen](https://www.jpkc.com/db/cheatsheets/networking/ssh-keygen/) – SSH-Schlüsselpaare erstellen und verwalten

