Wie schalte ich langsame / flockige Verbindungen ein?

20

Ich habe es mit einer sehr langsamen Shell-Verbindung zu tun. Es befindet sich in der Cloud und ich bin sehr weit vom Server entfernt. Meine Verbindung bricht auch manchmal ab, da dies über das Internet geschieht, und ich verwende möglicherweise auch gemeinsames Wifi oder 3G. Gibt es eine Möglichkeit zu sehen, was ich sofort tippe? Der Versuch, Befehle einzugeben und auf jedes Zeichen zu warten, ist grausam.

Zombies
quelle
4
Verwenden Sie "screen", um Ihre Sitzung am Leben zu halten, damit Sie die Verbindung wiederherstellen können, wenn Sie die Verbindung trennen.
Konerak

Antworten:

24

Versuchen Sie es mit Mosh .

Mosh (Mobile Shell)
Remote-Terminal-Anwendung, die Roaming ermöglicht, intermittierende Konnektivität unterstützt und intelligente lokale Echo- und Leitungsbearbeitung von Benutzertastenanschlägen bietet.

Mosh ist ein Ersatz für SSH. Es ist robuster und reaktionsschneller, insbesondere über Wi-Fi, Mobilfunk und Fernverbindungen.

Mosh ist freie Software für GNU / Linux, FreeBSD, Solaris, Mac OS X und Android.

dmourati
quelle
3
Vorbehalte zu mosh: (1) es ist viel intensiver als ssh CPU. (2) Wenn Ihre Mosh-Sitzung nicht normal endet, besteht eine undichte Verbindung, die niemals wiederhergestellt werden kann. (Ich muss meine Shell-Box putzen, sonst werden Dutzende von Prozessen ausgeführt.)
user606723
Ein weiteres Problem ist, dass es nahezu unmöglich ist, eine Linux-Distribution wie Suse (SLES) zu installieren. Ich habe stundenlang versucht, es entweder als openSuse-Paket zu installieren oder aus dem Quellcode zu kompilieren.
Zombies
$ sudo zypper in mosh (nach den docs)
dmourati
Ja, das wird unter openSuse gut funktionieren, aber bei einer Corporate / Closed-Distribution ist es sehr schwierig, neue Open-Source-Projekte zu installieren.
Zombies
10

eine alternative (und auch ergänzende) zu dmourati antwort: benutze screen oder tmuxoder andere Dinge, um Sitzungen am Leben zu halten, wenn Sie nicht verbunden sind. (Sie können die Verbindung nach dem erneuten Herstellen der Verbindung einfach wieder herstellen und das Terminal so anzeigen, wie Sie es verlassen haben, auch mit Vollbildprogrammen [vi usw.].) Es hat auch viele andere Vorteile (gemeinsame Nutzung von Sitzungen mit Kollegen usw.) (wie in der FAQ von Mosh angegeben:

F: Warum ist der Scrollback-Puffer meines Terminals unvollständig?

Mosh 1.2 synchronisiert nur den sichtbaren Zustand des Terminals. Mosh 1.3 bietet vollständige Scrollback-Unterstützung. siehe diese Ausgabe und die anderen, die von dort verlinkt sind. Die Problemumgehung besteht vorerst darin, screen oder tmux auf der Remote-Seite zu verwenden.

Außerdem sollten Sie rsynczum Kopieren von Dateien verwenden, ohne bereits gesendete Teile erneut über das Netzwerk senden zu müssen, wenn die Verbindung unterbrochen wird.

Olivier Dulac
quelle
2

Sie sollten sehen, wo die Latenz / Engpässe sind. Sie sollten versuchen, einen besseren Zugang zur Infrastruktur zu erhalten ... entweder vor Ort oder auf der Seite des Anbieters. Sie wickeln Ihre wichtigen oder kritischen Sitzungen intmux oder screenMultiplexer ...

Bitte geben Sie uns Zahlen. Für einfache SSH-Sitzungen ist eine besonders schlechte Verbindung erforderlich, um Probleme zu haben. Ich musste von einem Flugzeug über ein VPN auf Systeme auf der anderen Seite der Welt zugreifen und hatte immer noch nicht allzu viele Probleme. Ist das ein hartnäckiges Problem? Was traceroutesagt dir das?

ewwhite
quelle
Das Problem tritt häufig im Hotel-WLAN auf, wo es zu wenige Router und zu viele Geräte / Laptops gibt, die sich den Internetzugang teilen. Auch das gemeinsame W-LAN im Hotel ist von Natur aus ziemlich mies mit Ping-Zeiten, da das Durchqueren von einer oder mehreren Wänden eine Menge Zeitverzögerung verursacht. Das ist auch ein weiterer großer Engpass. Eine ähnliche Situation tritt bei 3G auf, wo die Entfernung zum Handyturm die MS erhöht. Bei der Verwendung von SSH-Shells muss ich auf jedes Zeichen warten. Eine MS von 200-400 kann ziemlich nervig sein, aber mit Spitzen von bis zu 1 Sekunde ... autsch.
Zombies
1

Für zukünftige Leser dieses Threads könnte der Tipp von @lowellheddings in seinem Blog zusammen mit der Verwendung von screen helfen, dieses Problem zu lösen :

Sie können den ssh-Client so konfigurieren, dass er automatisch alle Sekunden einen Protokoll-No-Op-Code sendet, damit der Server Sie nicht trennt. Diese Einstellung wird in anderen Clients manchmal als "Keep-Alive" oder "Stop-Disconnecting-So-Much" bezeichnet.
Fügen Sie der Datei / etc / ssh / ssh_config die folgende Zeile hinzu:
ServerAliveInterval 60
...

Snidhi Sofpro
quelle