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


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.


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.


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!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.