Czasami moja sesja SSH rozłącza się z Write failed: Broken pipe
komunikatem. Co to znaczy? Jak mogę zachować otwartą sesję?
Wiem o tym screen
, ale nie takiej odpowiedzi szukam. Myślę, że to jest sshd
opcja konfiguracji.
Możliwe, że serwer zamyka zbyt długo nieaktywne połączenia. Możesz zaktualizować klienta ( ServerAliveInterval
) lub serwer ( ClientAliveInterval
)
ServerAliveInterval
Sets a timeout interval in seconds after which if no data has
been received from the server, ssh(1) will send a message through
the encrypted channel to request a response from the server. The
default is 0, indicating that these messages will not be sent to
the server. This option applies to protocol version 2 only.
ClientAliveInterval
Sets a timeout interval in seconds after which if no data has
been received from the client, sshd(8) will send a message
through the encrypted channel to request a response from the
client. The default is 0, indicating that these messages will
not be sent to the client. This option applies to protocol
version 2 only.
Aby zaktualizować serwer (i zrestartować sshd
)
echo "ClientAliveInterval 60" | sudo tee -a /etc/ssh/sshd_config
Lub po stronie klienta:
echo "ServerAliveInterval 60" >> ~/.ssh/config
~/.ssh/config
moim Macu nie ma, czy muszę go tam utworzyć, czy jest gdzieś indziej?~/.ssh
). Więcmkdir -p ~/.ssh; chmod 700 ~/.ssh; touch ~/.ssh/config
Alternatywnym rozwiązaniem byłoby użycie
mosh
- mobilnej powłoki . W przeciwieństwie do ssh łączy się przez UDP i obsługuje roaming. Możesz rozpocząć sesję w domu, zawiesić laptopa, zabrać go do pracy / przyjaciół / gdziekolwiek indziej, gdzie masz internet, odłożyć laptopa i kontynuować pracę, jakby nic się nie wydarzyło. Jest to szczególnie przydatne, jeśli masz kiepskie połączenie internetowe: Pokazuje natychmiastowe informacje zwrotne, jeśli twoje naciśnięcia klawiszy nie docierają do serwera i ciągle próbują przywrócić połączenie.Instalacja i konfiguracja są proste: jest teraz uwzględnione we wszystkich obecnych dystrybucjach Linuksa (plus kilka innych niż Linux) i koordynuje inicjowanie sesji i uwierzytelnianie poprzez wcześniejsze połączenie ssh. Więc jeśli jesteś w stanie połączyć się za pośrednictwem
ssh user@server
, najprawdopodobniej będziesz w stanie połączyć się z mosh tylko przez wywołaniemosh user@server
, jeśli pakiety mosh są zainstalowane na obu końcach.Głównym powodem awarii połączenia jest to, że musisz połączyć się z serwerem na porcie UDP (domyślny zakres: 60000-61000), aby mosh działał. Jeśli więc serwer znajduje się za zaporą ogniową, przeważnie masz pecha, jeśli nie możesz samodzielnie wykopać w nim dziur ( konsekwencje dla bezpieczeństwa ).
źródło
Jeśli chcesz mieć dłuższy okres połączenia, w kliencie dodaj:
ServerAliveCountMax
domyślnie jest to ustawione na 3. Dlatego poServerAliveInterval
wysłaniu 3 małych paczek informacji na twój serwer automatycznie się wyloguje. Ustawienie go na 1200 oznacza, że proces ten będzie musiał wystąpić co najmniej 1200 razy. Krótko mówiąc, powinieneś być podłączony co najmniej 30 * 1200 sekund (10 godzin).źródło
Zazwyczaj oznacza to, że połączenie sieciowe (TCP) zostało zresetowane. Np. Twój dostawca Internetu ponownie Cię połączył lub coś takiego.
źródło
Miałem ten sam problem, ale nie jest to zgodne z oczekiwaniami. Jeśli stwierdzisz, że w tej samej sieci inny serwer próbuje uzyskać ten sam adres IP, napotkasz ten sam problem. Aby rozwiązać ten problem, musisz sprawdzić, czy istnieją inne serwery, które używają tego samego adresu IP. Można to zrobić za pomocą
arp
polecenia.Korzystam z Debiana, więc oto próbka poleceń, których używam do ustalenia, czy inny serwer rzeczywiście używa tego samego adresu IP
Zauważysz dwa zestawy adresów MAC przy użyciu tego samego adresu IP. Unikaj konfliktu, ustawiając jeden na inny adres IP.
źródło
Inną przyczyną „komunikatu o uszkodzonej rurze” jest to, że inna maszyna próbuje użyć tego samego adresu IP co host.
Prosty sposób sprawdzenia, czy ktoś używa tego adresu IP:
Aby dowiedzieć się, które maszyny są w twojej sieci, możesz użyć tego pytania z pytaniami na Unixa i Linuksa: jak znaleźć inne maszyny podłączone do sieci lokalnej .
źródło