SSH, jeśli wynik polecenia jest większy niż około 5 linii

11

Poradzono mi, aby zadać to pytanie tutaj: Jestem zaskoczony następującym problemem, który obecnie występuje.
Mam serwer Linux Debian 5.0 podłączony za pomocą kabla Ethernet do mojego routera DSL. Mój laptop ma system Windows 7 i jest podłączony bezprzewodowo (802.11b / g) do tego samego routera DSL. Jeśli włączę SSH do serwera za pomocą Putty i spróbuję wykonać polecenie, które spowoduje powstanie wielu wierszy danych wyjściowych, moja sesja SSH zawiesi się. Dawny.

ls -al /             // Freezes
ls -al / > ~/boo.txt // OK
vi ~/boo.txt         // OK
top                  // Freezes

Wszystkie powyższe polecenia działają, jeśli wykonam je bezpośrednio na serwerze lub zmienię połączenie laptopa na połączenie przewodowe. Co daje? Ten problem naprawdę mnie zaskakuje! Dzięki

Społeczność
źródło
Może chcę o to zapytać na StackOverflow, ale wygląda na to, że może to być problem ze znakami specjalnymi (być może kolor), ponieważ vi nie wykonuje żadnych koloryzacji (chyba że jest to vim).
Topher Fangio,
On nie zapytać go na StackOverflow, ale będzie prawdopodobnie lepiej przesuwając go do ServerFault ... i jestem z Aidan: mój pierwszy podejrzany był MTU sieci.
dmckee --- były moderator kociak
Ah ha ha, tak, błąd serwera, nie StackOverflow ... to poniedziałek = P
Topher Fangio

Odpowiedzi:

9

brzmi jak problem z przewodowym MTU. nieco...

czy to możliwe, że masz włączone jumboframe? prawdopodobnie nie. tak czy inaczej - spróbuj ustawić niższe mtu w debianie i sprawdź, czy to pomaga.

pQd
źródło
Oddelegowany; brzmi to jak problem MTU. Sugeruję wypróbowywanie coraz większych pakietów (łatwe do wykonania przy użyciu polecenia ping), dopóki nie wystąpią błędy / odrzucone pakiety. Lub po prostu sprawdź ustawienia MTU wszędzie :)
MikeyB,
Dzięki ludzie! Niższe MTU na laptopie załatwiło sprawę. Czy MTU dotyczy nadawcy / odbiorcy / obu? Mogłem pingować serwer z laptopa o większym rozmiarze danych. Odwrotna sytuacja nie była prawdą. Serwer Linux: ~ # ping -S 5000 athlon64-laptop.lan PING athlon64-laptop.lan 56 (84) bajtów danych 64 bajtów z xxxx: icmp_seq = 1 ttl = 128 czas = 2,71 ms W systemie Windows laptop> ping -l 2048 athlon64x2-server.lan Pinging athlon64x2-server.lan z 2048 bajtami danych: Upłynął limit czasu żądania. > ping -l 1048 athlon64x2-server.lan Pinging athlon64x2-server.lan z 1048 bajtami danych: Odpowiedź od xxxx: bajtów = 1048 czasu = 3ms TTL = 64
@leftbrainlogic - problemy z Mtu wskazują, że w Twojej sieci jest coś podejrzanego. może punkt dostępowy nie przekazuje największych dozwolonych ramek [1500B] dla szybkiego Ethernetu? czy ręcznie skonfigurowałeś serwer do używania ramek jumboframe?
pQd,
@pQd - Nie, serwer właśnie uruchamia waniliową instalację Debiana 5.0. Zaakceptowałem wszystkie wartości domyślne oprócz partycjonowania dysku i nazwy hosta Wyjście z ifconfig -a jest tutaj: pastebin.com/f78fcbf3d
@leftbrainlogic - ok; spróbuj obniżyć Mtu zgodnie z opisem w moim linku. twoja 1500B ma na ogół standardową długość, myślę, że to wskazuje na jakiś problem z przełącznikiem, punktem dostępu lub kartą sieci Wi-Fi.
pQd,
3

Prawdopodobnie występuje problem z MTU połączenia sieciowego - gdy serwer Linux próbuje wysłać zbyt wiele bajtów danych w jednym pakiecie sieciowym, prawdopodobnie router odmawia przekazania go do okna systemu Windows, ponieważ uważa, że ​​rozmiar pakietu to za duży, aby wysłać przez sieć bezprzewodową. Powinieneś być w stanie zmniejszyć MTU dla interfejsu Ethernet na Linux-ie, a to prawdopodobnie rozwiązałoby twój problem.

Aby zdiagnozować, spróbuj ping -s <packetsize> <windows-ip> od pola linux do adresu IP twojego komputera ping <linux-ip> <packetsize>z systemem Windows i od okna systemu Windows do Linux, z różnymi wartościami parametru parametru packetsize, i sprawdź, czy maksymalny rozmiar jest różny w obu kierunkach.

Ponadto: man pingw systemie Linux będzie pomocny w zrozumieniu, co się dzieje.

Aidan Cully
źródło
0

Pierwszą rzeczą do zrobienia jest włączenie trybu debugowania, zarówno na kliencie, jak i na serwerze.

PuTTY ma wbudowane debugowanie, które jest dostępne w Sesja -> Logowanie . Pamiętaj, że musisz załadować sesję, której zamierzasz użyć, przed skonfigurowaniem ustawień rejestrowania. Ustawienia rejestrowania są częścią konfiguracji sesji.

Na serwerze możesz pozostawić LogLevel na INFO (in /etc/ssh/sshd_config) i zmienić go na DEBUG, tylko jeśli nie widzisz nic związanego z twoim problemem. Pamiętaj, aby się wylogować i zrestartować serwer ssh, aby zastosować zmiany ( /etc/init.d/ssh restart). Jeśli DEBUG nie daje żadnych użytecznych informacji, spróbuj DEBUG3, zgodnie z man sshd_config.

Zaktualizuj swoje pytanie o swoje ustalenia!

Nicolas Marchildon
źródło