Jak ssh na wolnych / niestabilnych połączeniach?

20

Mam do czynienia z naprawdę wolnym połączeniem powłoki. Jest w chmurze i jestem bardzo daleko od serwera. Moje połączenie również czasami się przerywa, ponieważ jest dostępne w Internecie i mogę także korzystać ze wspólnej sieci Wi-Fi lub 3G. Czy jest sposób, aby zobaczyć, co wpisuję od razu? Próba wpisywania poleceń i czekania na każdą postać jest okropna.

Zombie
źródło
4
Użyj „ekranu”, aby utrzymać sesję przy życiu, abyś mógł ponownie połączyć się po rozłączeniu.
Konerak

Odpowiedzi:

24

Wypróbuj Mosh .

Mosh (mobilna powłoka)
Zdalna aplikacja terminalowa, która umożliwia roaming, obsługuje sporadyczne połączenia oraz zapewnia inteligentne lokalne echo i edycję linii klawiszy użytkownika.

Mosh zastępuje SSH. Jest bardziej niezawodny i responsywny, szczególnie w przypadku połączeń Wi-Fi, komórkowych i dalekobieżnych.

Mosh to darmowe oprogramowanie, dostępne dla systemów GNU / Linux, FreeBSD, Solaris, Mac OS X i Android.

dmourati
źródło
3
Ostrzeżenia dla mosh: (1) jest znacznie bardziej intensywne niż procesor ssh. (2) Jeśli twoja sesja mosh nie zakończy się normalnie, będziesz mieć nieszczelne połączenie, którego nigdy nie będzie można przywrócić. (Muszę wyczyścić moją skrzynkę shellową, w przeciwnym razie uruchomione zostaną dziesiątki procesów).
user606723,
Inną kwestią jest to, że jest prawie niemożliwe, aby zainstalować na Linuksie, takim jak Suse (SLES). Spędziłem godziny próbując zainstalować go jako pakiet openSuse lub kompilując go ze źródła.
Zombie
$ sudo zypper in mosh (zgodnie z dokumentami)
dmourati,
Tak, to zadziała dobrze na openSuse, ale w przypadku korporacyjnej / zamkniętej dystrybucji bardzo trudne jest instalowanie nowych projektów open source.
Zombie
10

alternatywa (a także dodatkowo), aby odpowiedzieć dmourati: wykorzystania screenlub tmuxczy innych rzeczy, aby utrzymać przy życiu, kiedy sesje są odłączone. (Po ponownym podłączeniu po prostu ponownie dołączasz do sesji i widzisz terminal, jak go opuściłeś, nawet w przypadku programów pełnoekranowych [vi, itp.]). Ma także wiele innych korzyści (dzielenie sesji ze współpracownikami itp.) (Jak w często zadawanych pytaniach Mosha:

P: Dlaczego bufor przewijania w moim terminalu jest niekompletny?

Mosh 1.2 synchronizuje tylko widoczny stan terminala. Mosh 1.3 będzie miał pełną obsługę przewijania; zobacz ten problem i inne, które są z niego powiązane. Na razie obejściem tego problemu jest użycie screena lub tmuxa po drugiej stronie.

I powinieneś również użyć rsyncdo kopiowania plików, bez konieczności ponownego wysyłania już wysłanych części przez sieć, gdy połączenie zostanie zerwane.

Olivier Dulac
źródło
2

Powinieneś zobaczyć, gdzie znajdują się opóźnienia / wąskie gardła. Powinieneś spróbować uzyskać lepszy dostęp do infrastruktury ... lokalnie lub po stronie dostawcy. Zawijasz swoje ważne lub krytyczne sesje tmuxlub screenmultipleksery ...

Podaj nam numery. Szczególnie trudne połączenie wymaga prostych sesji SSH, aby mieć problemy ... Musiałem uzyskać dostęp do systemów po drugiej stronie świata z samolotu za pośrednictwem sieci VPN i nadal nie miałem zbyt dużych problemów. Czy to trwały problem? Co tracerouteci mówi

ewwhite
źródło
Problem występuje często w hotelowym Wi-Fi, gdzie jest za mało routerów i zbyt wiele urządzeń / laptopów współdzielących dostęp do Internetu. Również współdzielone Wi-Fi w hotelu jest z natury dość kiepskie z czasami pingowania, ponieważ przejście przez 1 lub więcej ścian naprawdę dodaje dużo opóźnienia. To także kolejne poważne wąskie gardło. Podobna sytuacja ma miejsce w 3G, gdzie tak duża odległość od wieży telefonu komórkowego dodaje MS. Podczas korzystania z powłok SSH muszę czekać na każdą postać. MS 200-400 może być dość denerwujące, ale z skokami do 1 sekundy ... ouch.
Zombie
1

Dla przyszłych czytelników tego wątku wskazówka @lowellheddings na jego blogu wraz z ekranem może pomóc w rozwiązaniu tego problemu:

Możesz skonfigurować klienta ssh tak, aby automatycznie wysyłał kod protokołu no-op co kilka sekund, aby serwer cię nie rozłączył. To ustawienie jest czasem określane jako Keep-Alive lub Stop-Disconnecting-So-Much u innych klientów.
Dodaj następujący wiersz do pliku / etc / ssh /
ssh_config : ServerAliveInterval 60
...

Snidhi Sofpro
źródło