Błąd sieci PuTTY: Oprogramowanie spowodowało przerwanie połączenia


81

Mam dziwny problem: kiedy używam PuTTY z SSH łączącym się z serwerem Linux hostowanym w VMware na moim lokalnym Windows 7 , często "Network error: Software caused connection abort"pojawia się komunikat o błędzie, a następnie okno PuTTY SSH jest nieaktywne. Zwykle mogę zalogować się na serwerze za pomocą PuTTY i coś zrobić, ale po losowym czasie (około jednej lub dwóch minut) pojawia się ten błąd. I czasami nawet nie mogę się zalogować, pojawia się błąd z przekroczeniem limitu czasu.

Wydaje mi się, że coś jest nie tak z moim VMware Player, ponieważ mam inny pulpit Ubuntu hostowany w VMware jako serwer repozytorium kodu, i częściej występuje błąd przekroczenia limitu czasu podczas aktualizacji / zatwierdzania SVN. Wydaje mi się jednak, że Windows 7 ma pewne dziwactwa, ponieważ ten sam serwer Ubuntu hostowany w VMware jako repozytorium kodu działa bardzo dobrze w systemie Windows Vista! Wygląda na to, że wszystkie złe rzeczy dzieją się po przejściu z systemu Windows XP na Windows Vista, a następnie Windows 7!

Co może być przyczyną tego problemu i jak można go naprawić?

Suplement :

Przeprowadziłem wyszukiwanie w Google i zastosowałem wszystkie metody, w tym:

  1. Włącz sshd TCPKeepAlive
  2. Ustaw sshd ClientAliveIntervalna 900i ClientAliveCountMaxna3
  3. Ustaw ustawienie połączenia PuTTY na „sekundy między keepalives” na 5.

Ale to wszystko nie działa! I po pewnym czasie sesja SSH w PuTTY wciąż się psuje!

Wyłączyłem zarówno zaporę ogniową serwera Linux, jak i zaporę klienta systemu Windows 7, ale limit czasu logowania wciąż się kończy! To jest naprawdę denerwujące!

Wygląda na to, że czasami mogę się zalogować, ale czasem logowanie się kończy! Naprawdę nie wiem dlaczego. Doprowadza mnie to do szału!

Jedną rzeczą, o której muszę wspomnieć, jest to, że kiedy używam PuTTY SSH łączącego się ze zdalnym serwerem, i wszystko jest w porządku!

Gdy nie udało mi się zalogować, polecenie ping również nie powiodło się! Ale jak to się może stać? Używam odtwarzacza VMware do hostowania serwera Linux na moim komputerze lokalnym!


Czy pojawia się ten błąd, gdy aktywnie korzystasz z połączenia ssh? lub po pozostawieniu go przez jakiś czas nieaktywnym?
MaQleod,

1
Jest nieaktywny dla podstępu. Ale czasami nawet nie mogę się zalogować, aby uzyskać limit czasu.
Robert,

1
Sprawdziłbym ustawienia limitu czasu sesji dla serwera SSH.
MaQleod

Ale najczęściej nie mogę nawet zalogować się na serwerze z powodu przekroczenia limitu czasu!
Robert,

3
Czy ten problem został rozwiązany? Wypróbowałem większość wymienionych poniżej rozwiązań i wydaje mi się, że nic nie działa. Jakieś inne sugestie? Stoję w obliczu dokładnie tego samego problemu, co oryginalne wydanie Roberta
user682765,

Odpowiedzi:


58

Putty ma funkcję, która próbuje rozwiązać ten problem:

Network Error: Software caused connection abort
  1. Uruchom Putty
  2. Załaduj ustawienia połączenia, jeśli je zapisałeś
  3. Kliknij „Połączenie”
  4. W sekcji zatytułowanej „Wysyłanie pakietów zerowych, aby sesja była aktywna”, zmieniono ją na 5 sekund. 300 sekund może być lepsze, jeśli problemem są awarie sieci, przeczytaj szczegóły poniżej.

wprowadź opis zdjęcia tutaj

Jak Keepalives, aby zapobiec rozłączeniu z Putty:

Niektóre routery sieciowe i zapory ogniowe muszą śledzić wszystkie połączenia za ich pośrednictwem. Zazwyczaj zapory te zakładają, że połączenie nie działa, jeśli po pewnym okresie czasu żadne dane nie zostaną przesłane w żadnym kierunku. Może to spowodować nieoczekiwane zamknięcie sesji PuTTY przez zaporę, jeśli w sesji nie będzie widać ruchu.

Opcja keepalive („Sekundy między keepalives”) pozwala skonfigurować PuTTY do wysyłania danych przez sesję w regularnych odstępach czasu, w sposób, który nie zakłóca rzeczywistej sesji terminala. Jeśli stwierdzisz, że zapora sieciowa odcina bezczynne połączenia, możesz spróbować wpisać w tym polu niezerową wartość. Wartość mierzona jest w sekundach; więc na przykład, jeśli zapora odcina połączenia po dziesięciu minutach, możesz wpisać 300 sekund (5 minut) w polu.

Zmniejsz problem za pomocą autologiny szpachli i narzędzia „screen”

Putty nie radzi sobie z kiepskim Wi-Fi, które traci łączność na kilka minut. Obejściem jest użycie autologiny i ekranu.

Nie jest to trywialny problem dla szpachli, aby ponownie zsynchronizować terminal po minucie utraty połączenia z Internetem. Ryzykujesz atakami człowieka w środku podczas awarii. W każdym razie musisz się ponownie uwierzytelnić, aby się upewnić. Putty nie narzuca ci tego, po prostu cię upuszcza.

Więc użyj autologin, aby kit mógł automatycznie zalogować się w Twoim imieniu.

  1. Wygeneruj klucz prywatny za pomocą narzędzia puttygen na komputerze, którym używasz szpachli.
  2. Wklej klucz publiczny w swoim /home/youruser/.ssh/authorized_keysserwerze, na serwerze, na którym używasz putty, zaloguj się.
  3. Udostępnij klucz prywatny kitu w ustawieniach kitu Połączenie -> SSH-> Auth
  4. Dodaj klucz prywatny, określając plik klucza prywatnego w: „Plik klucza prywatnego do uwierzytelnienia”.
  5. Zapisz ustawienia połączenia szpachli.

Wtedy będziesz mógł kliknąć dwukrotnie swoje połączenie za pomocą szpachli i powinno to zabrać cię bezpośrednio do terminala bez wpisywania nazwy użytkownika / hasła.

Teraz możesz podpiąć login do kitu na tym połączeniu za pomocą kombinacji klawiszy jak F6. Więc kiedy wifi się zepsuje i zostaniesz upuszczony. Zacierasz F6 i jesteś ponownie zalogowany.

ALE wciąż tracisz stan swojego terminala! Jak to naprawić? Użyj programu „screen”. Utwórz nowy ekran, wpisując „screen”. Zostanie utworzony nowy ekran.

Gdy zostaniesz wyrzucony i automatyczne logowanie, możesz ponownie podłączyć się do ekranu. Oto poradnik jak to zrobić: http://www.tecmint.com/screen-command-examples-to-manage-linux-terminals/

Problemem jest wpisywanie screeni ponowne łączenie się za każdym razem, gdy zostaniesz upuszczony. Możesz więc napisać skrypt, który „automatycznie przeniesie Cię do ostatniego dostępnego ekranu”, aby był przezroczysty.

Więc wtedy, gdy terminal kit zamarza. Wygląda to tak: prychasz z pogardą, zacierasz Alt + F4, aby zamknąć kit, zacierasz F6. W 6 sekund jesteś z powrotem tam, gdzie skończyłeś.

Teoretycznie jeszcze lepsze rozwiązanie

Teoretycznie możesz napisać skrypt dla całego powyższego procesu, więc terminal wykrywa, kiedy został upuszczony, i wykonuje wszystkie powyższe kroki w celu przywrócenia połączenia internetowego. Jeśli ktoś zna program, który robi to automatycznie, daj mi znać. Byłoby fajnie.

Źródła:

http://the.earth.li/~sgtatham/putty/0.58/htmldoc/Chapter4.html#config-keepalive

http://rafaelwolf.com/?p=516


Witam, robię to, ale nadal
pojawia się

Ponadto nie można zapisać sekund między kolejnymi utrzymaniami dla następnego połączenia.
ZhaoGang

10

Rozwiązywanie problemów z błędem sieci PuTTY

Software caused connection abort

Przeczytaj, co PuTTY ma do powiedzenia na temat błędu

Jest to ogólny błąd generowany przez kod sieci Windows, gdy z jakiegoś powodu przerywa ustanowione połączenie. Może się to na przykład zdarzyć, gdy wyciągniesz kabel sieciowy z tyłu komputera podłączonego do Ethernetu lub jeśli system Windows ma inne podobne powody, by sądzić, że cała sieć jest nieosiągalna.

System Windows generuje również ten błąd, jeśli zrezygnował z komputera na drugim końcu odpowiadającego połączenia. Jeśli sieć między klientem a serwerem ulegnie awarii, a następnie klient spróbuje wysłać pewne dane, system Windows podejmie kilka prób wysłania danych, a następnie zrezygnuje i zakończy połączenie. W szczególności może się to zdarzyć, nawet jeśli nic nie wpiszesz, jeśli używasz SSH-2, a PuTTY podejmie próbę wymiany klucza.

(Może się to również zdarzyć, jeśli używasz keepalives w swoim związku. Inne osoby zgłosiły, że keepalives naprawiają dla nich ten błąd. (Istnieją zalety i wady keepalives).)

Nie znamy żadnego powodu, dla którego mógł wystąpić ten błąd, który reprezentowałby błąd w PuTTY. Problem dotyczy Ciebie, Twojego systemu Windows, sieci i systemu zdalnego.

Wypróbuj innego klienta SSH

Najprawdopodobniej problem istnieje gdzieś pomiędzy PuTTY a docelowym serwerem SSH. Aby to udowodnić, użyj innego klienta SSH, takiego jak ( http://kitty.9bis.net ), i sprawdź, czy problem występuje również w tym przypadku. Prawdopodobnie tak będzie, co pozwoli oddzielić problem od PuTTY.

Podejrzane niejednolite połączenie internetowe

Problemem może być nieregularne połączenie internetowe. Łączność z Internetem Monitorowanie czasu działania połączenia internetowego jest dobrym sposobem na ustalenie, czy twój dostawca usług internetowych traci pakiety i jest winny upadku PuTTY. Pobierz oprogramowanie, które testuje czas działania połączenia internetowego. Na przykład http://code.google.com/p/internetconnectivitymonitor/. Częste i długie odłączanie się od Internetu stanowi naruszenie wymagań usługodawców internetowych. W takim przypadku trudno będzie udowodnić, że to wina dostawcy usług internetowych, ponieważ wsparcie techniczne automatycznie obwinia tego rodzaju problemy na komputerze, systemie operacyjnym, routerze i okablowaniu w domu. Jeśli korzystasz z Internetu kablowego i żyjesz w dobrodziejstwach, możliwe, że wadliwy sprzęt w domach sąsiadów może wysyłać zakłócenia na linię przez kilka sekund / minut, gdy włączają się po raz pierwszy. Wreszcie, możliwe jest, że w twoim domu jest uszkodzony sprzęt sieci ISP. Koszt wymiany sprzętu przez dostawców usług internetowych jest tak wysoki, że często tego nie robią, chyba że na danym obszarze jest wystarczająca liczba abonentów, aby uzasadnić koszty.

Podejrzewaj router przewodowy / bezprzewodowy

Czy łączysz się przez router przewodowy / bezprzewodowy? Jak stare to jest? Problem może dotyczyć routera. Stara technologia bezprzewodowa i przewodowa może od czasu do czasu zerwać i przerywać połączenia i restartować je, powodując śmierć PuTTY. Usuń te składniki z równania i sprawdź, czy to rozwiąże problem. Wypróbuj połączenie przewodowe i / lub inny router, aby sprawdzić, czy to rozwiąże problem. Miałem router bezprzewodowy Linksys, który cierpi z powodu tej powolnej śmierci, porzuca połączenia i ponownie je uruchamia.

Podejrzany jest system operacyjny zapewniający połączenie SSH

Komputer, z którym łączysz się za pomocą SSH, ma zasady dotyczące liczby sekund utrzymywania połączeń SSH przy życiu. Ze względów bezpieczeństwa liczba ta jest niska i można ją zwiększyć. To ustawienie zależy od używanego systemu operacyjnego zapewniającego SSH.

Jeśli używasz PuTTY za pośrednictwem maszyny wirtualnej

Jeśli używasz PuTTY przechodzącego przez maszynę wirtualną, może istnieć zasada na maszynie wirtualnej, która przerywa połączenie SSH z serwerem, gdy myśli, że jest nieaktywna. Zwiększenie tych wartości zależy od używanego oprogramowania maszyny wirtualnej i systemu operacyjnego.

Jeśli połączenie internetowe jest złe, obejście połączenia klienta SSH:

Jeśli Twój dostawca usług internetowych zapewnia niestabilne połączenie, możesz sprawić, że rozłączenia będą mniej bolesne dzięki „ssh autologin”. Generujesz klucz publiczny i prywatny. I mówisz swojemu zagranicznemu serwerowi, aby automatycznie wpuścił każdego, kto dostarczy dokładny klucz prywatny. Nie rozwiązuje to całkowicie twojego problemu, ale gdy nastąpi awaria Internetu, wystarczy zamknąć okno, kliknąć dwukrotnie ikonę i natychmiast zostaniesz przeniesiony z powrotem do wiersza poleceń folderu domowego bez podawania nazwy użytkownika / hasła.

Pomoże ci to w tym: Czy istnieje sposób na „automatyczne logowanie” w PuTTY za pomocą hasła?


4

W wierszu polecenia z podwyższonym poziomem uprawnień uruchom następujące polecenie:

C:\Windows\system32>netsh int tcp show global

Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State          : enabled

Chimney Offload State               : automatic

NetDMA State                        : enabled

Direct Cache Acess (DCA)            : disabled

Receive Window Auto-Tuning Level    : normal

Add-On Congestion Control Provider  : none

ECN Capability                      : disabled

RFC 1323 Timestamps                 : disabled

Jeśli Receive Window Auto-Tuning Leveljest to normalne, będziesz mieć problemy. Wyłącz to, a wtedy wszystko powinno działać tak, jak kiedyś:

C:\Windows\system32>netsh int tcp set global autotuninglevel=disabled

5
czy możesz wyjaśnić, dlaczego to działa / co robi?
Eiyrioü von Kauyf,


W moim przypadku nie pomaga.
reinierpost

4

Pracowałem z serwerami CentOS z komputerów z systemem Windows i miałem ten sam problem z PuTTY. Sesja nie trwała dłużej niż 1-5 minut. Próbowałem grać z ustawieniami PuTTY (keepalives itp.), Ale to wcale nie pomogło.

Wreszcie znalazłem rozwiązanie dla mojej sprawy. Zapisałem zrzuty TCP zarówno na kliencie, jak i na serwerze. Odkryłem, że w ciągu 25-30 sekund przed rozłączeniem jest kilka retransmisji segmentów TCP na zrzucie klienta (zarówno ze strony klienta, jak i ze strony serwera) i wreszcie PuTTY wysyła RST i zamyka sesję z tym błędem. Na zrzucie serwera w tym okresie nie widziałem żadnych segmentów od klienta, nawet RST. Oznacza to, że od czasu do czasu na serwer nie są dostarczane żadne segmenty TCP od klienta, a okres ten wynosi około 30–60 sekund. Nagrałem sprawę kilka razy i zawsze były retransmisje i końcowy RST z PuTTY. Prawdopodobnie gdzieś na trasie pakiety zostały upuszczone przez urządzenia sieciowe.

Aby obejść ten problem, zwiększyłem maksymalną liczbę retransmisji danych z wartości domyślnej 5 do 16. Może to zapobiec zbyt szybkiemu rozłączaniu się PuTTY. Zmienna to „HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ TcpMaxDataRetransmissions”. Dodałem tę zmienną ręcznie, nie była początkowo zdefiniowana w rejestrze mojego systemu Windows. Pomogło! Teraz widzę, że PuTTY zawiesza się od czasu do czasu, ale zawsze wraca do pracy.

Aby rozwiązać problem: 1. Zarejestruj zrzut TCP i poszukaj retransmisji i RST przed rozłączeniem. 2. Jeśli znajdziesz te same retransmisje / segmenty RST, dostosuj liczbę ponownych prób po stronie serwera lub klienta (zależy to od strony RST).

Uwaga: zmiana ustawień TCP dotyczy całego oprogramowania i samego systemu operacyjnego.


3

Błąd Błąd sieci: Oprogramowanie spowodowało przerwanie połączenia z PuTTY jest wynikiem konfliktu adresu IP (dwa lub więcej komputerów ma ten sam adres IP) w sieci. (Miałem ten problem z Raspberry Pi, który otrzymał ten sam adres IP przypisany przez serwer DHCP , co jakieś nieuczciwe urządzenie / komputer, który został skonfigurowany ręcznie, aby używać tego samego adresu IP).

W tym konkretnym przypadku może to być konflikt adresu IP lokalnie na komputerze z systemem Windows 7 lub z innym urządzeniem w sieci. Za pomocą Wireshark można z powodzeniem wyśledzić tego rodzaju błąd.


2

Błąd 10053 WSAECONNABORTED(przerwanie połączenia spowodowanego przez oprogramowanie) jest ogólnym błędem Winsock, który może być emitowany z wielu powodów.

Oficjalne wyjaśnienie mówi:

Ten błąd może wystąpić, gdy system sieci lokalnej przerywa połączenie, na przykład gdy Winsock zamyka ustanowione połączenie po niepowodzeniu retransmisji danych (odbiornik nigdy nie potwierdza danych wysyłanych do gniazda strumienia danych).

Przyczyny tego problemu mogą być od wadliwych kabli sieciowych po prostą utratę łączności. Nie można zaoferować jednego rozwiązania.


2

Miałem ten sam problem z PuTTY po zainstalowaniu nowego routera WLAN / modemu 3G w celu połączenia z Internetem. Wypróbowałem wszystkie powyższe rozwiązania utrzymywania aktywności - i wszystkie w menu konfiguracji routera - bezskutecznie.

Potem przypomniałem sobie coś z lat 90., kiedy miałem modem telefonu stacjonarnego: MTU (maksymalna jednostka transmisji), w zasadzie maksymalny rozmiar przesyłanych fragmentów danych - miał to znaczący wpływ na stabilność połączenia.

Sprawdziłem więc konfigurację routera WLAN, znalazłem ustawienie MTU i zmieniłem je ze stałej wartości 1424 na „Auto” (chciałem wypróbować mniejszą wartość, ale „Auto” brzmiało jeszcze lepiej). Po tym nie miałem już żadnych problemów z PuTTY - połączenie jest teraz bardzo solidne. Mam nadzieję, że pomoże to przynajmniej komuś z problemem „Błąd sieci: oprogramowanie spowodowało przerwanie połączenia”.


2

Karta Połączenie: utrzymuj przy życiu ustawioną na „5” sekund i włączoną

Ale co ważniejsze:

Połączenie -> SSH -> Kex , maksymalna liczba minut przed ponownym wpisaniem : „2” (domyślnie 60).

Moja PuTTY po pewnym czasie traciła klucz, powodując przekroczenie limitu czasu. Upuszczenie tej wartości do „2” minut rozwiązało problem. Pozostaję w kontakcie na czas nieokreślony.


1

Wystąpił ten sam problem ze skryptem WinSCP lub konsolą GUI. Wreszcie znalazłem, że jest to związane z prędkością (prędkość Internetu - nasz serwer jest w Internecie). Przeniosłem skrypt w inne miejsce w sieci, inną stronę, a nie zarówno GUI, jak i Skrypt działały dobrze.

Zostało to uporządkowane po wielu analizach i sortowaniu.


0

Musisz włączyć TCPKeepAlivew systemie Linux.

Jest to wyjaśnione w FAQ PuTTy na stronie internetowej, gdy szukasz tego błędu.


Ale domyślna wartość TCPKeepAlive to tak. Jednak włączyłem to. Ale limit czasu logowania jest teraz pierwszym problemem. Jakieś pomysły?
Robert

Wyłączyłem zarówno zaporę ogniową serwera Linux, jak i zaporę klienta Windows-7, ale limit czasu logowania jest nadal przekroczony! Naprawdę denerwujące!
Robert

Wydaje się, że czasami mogę się zalogować, ale czasem logowanie się kończy. Naprawdę nie wiem dlaczego. Doprowadza mnie to do szału!
Robert,

0

Jeśli maszyna wirtualna działa na lokalnym sprzęcie, wyłącz pakiety aktywne.


6
Czy potrafisz rozwinąć odpowiedź? Może dać instrukcje dla przyszłych gości?
Kanadyjczyk Łukasz

Mam odwrotną sytuację niż OP - moja VM jest klientem ssh łączącym się z hostem, a klient często się rozłącza. Wydaje się, że wyłączenie podtrzymywania aktywności rozwiązało problem. Zastanawiam się dlaczego.
Raman

0

Właściwie wiele razy miałem do czynienia z tymi problemami. Szukałem rozwiązania spędzając godziny, ale żadne z nich nie było skuteczne. Dzielę się rozwiązaniem, które dla mnie zadziałało i mam nadzieję, że przyda się także innym.

Mam Windows 10 jako hosta O / S i Redhat-7 jako gość O / S, a moje VMware ma połączenie mostkowe. Jako DBA muszę odwiedzać klientów i ustawiać konfigurację sieci zgodnie z lokalami klienta. Dlatego za każdym razem, gdy opuszczam siedzibę klienta i łączę się z inną siecią przez sieć bezprzewodową i otwieram maszynę wirtualną, napotykałem ten sam problem, jak podano w pytaniu. Pomyślałem więc przez chwilę i sprawdziłem moją konfigurację dla LAN Ethernet i Wireless Ethernet i znalazłem niezgodność. Ponieważ moja maszyna wirtualna automatycznie używałaby fizycznego Ethernetu pomiędzy dwoma do mostkowania. Kiedy zresetowałem konfigurację sieci LAN / Wireless Ethernet do DHCP, działało to jak urok i nie było już przerwania połączenia. [Możesz także ponownie uruchomić komputer po ustawieniu go na DHCP.]

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.