it-swarm-eu.dev

Co znamená zpráva Broken pipe v relaci SSH?

Někdy se moje relace SSH odpojí pomocí Write failed: Broken pipe zpráva. Co to znamená? A jak mohu udržet otevřenou relaci?

Vím o screen, ale to není odpověď, kterou hledám. Myslím, že je to konfigurační možnost sshd.

107
Peter Stuifzand

Je možné, že váš server uzavírá připojení, která jsou nečinná příliš dlouho. Můžete aktualizovat buď svého klienta (ServerAliveInterval), nebo svého serveru (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.

Aktualizace serveru (a restartování sshd)

echo "ClientAliveInterval 60" | Sudo tee -a /etc/ssh/sshd_config

Nebo na straně klienta:

echo "ServerAliveInterval 60" >> ~/.ssh/config 
92
Gert

Alternativním řešením by bylo použití mosh - mobilní prostředí . Na rozdíl od ssh se připojuje přes UDP a podporuje roaming. Můžete zahájit relaci doma, pozastavit přenosný počítač, vzít jej do práce/přátelům/kdekoli jinde, kde máte internet, uvolnit laptop a pokračovat v práci, jako by se nic nestalo. To je zvláště užitečné, pokud jste na mizerném připojení k internetu: Ukazuje okamžitou zpětnou vazbu, pokud vaše stisknutí kláves nedosáhne na server a nepřetržitě se pokouší obnovit připojení.

Instalace a nastavení jsou jednoduché: Nyní je zahrnuta ve všech současných distribucích Linuxu (plus několik ne-linuxových) distribucí a koordinuje inicializaci a autentizaci relace prostřednictvím předchozího připojení ssh. Pokud se tedy můžete připojit přes ssh [email protected] s velkou pravděpodobností se budete moci spojit s mosh pouhým voláním mosh [email protected], pokud jsou balíčky mosh nainstalovány na obou koncích.

Hlavním důvodem selhání připojení je to, že musíte dosáhnout serveru na portu UDP (výchozí rozsah: 60000-61000), aby mosh fungoval. Takže pokud je server za bránou firewall, máte většinou smůlu, pokud v něm nedokážete prorazit díry ( bezpečnostní důsledky ).

6
Perseids

Pokud chcete mít delší dobu připojení, přidejte do klienta:

echo 'ServerAliveInterval 30' | tee -a ~/.ssh/config
echo 'ServerAliveCountMax 1200' | tee -a ~/.ssh/config

ServerAliveCountMax ve výchozím nastavení je nastaveno na 3. Proto, jakmile ServerAliveInterval poslal na váš server 3 malé balíčky informací, pak se automaticky odhlásí. Nastavení na 1200 znamená, že tento proces bude muset proběhnout nejméně 1200krát. Stručně řečeno, měli byste být připojeni alespoň 30 * 1200 sekund (10 hodin).

5
Francisco Costa

Obvykle to znamená, že vaše síťové (TCP) připojení bylo resetováno. Např. váš internetový poskytovatel vás nebo něco takového znovu připojil.

2
maxschlepzig

Měl jsem stejný problém, ale není to tak, jak se očekávalo. Pokud zjistíte, že ve stejné síti jiný server zkouší stejnou IP adresu, budete čelit stejnému problému. Chcete-li to vyřešit, musíte zkontrolovat, zda existují jiné servery, které používají stejnou IP adresu. To lze provést pomocí příkazu arp.

Používám Debian, takže zde je ukázka příkazů, které používám k určení, zda jiný server skutečně používal stejnou IP adresu

apt-get install arp-scan
arp-scan -I eth0 -l | grep 192.168.1.42
  192.168.1.42 d4:eb:9a:f2:11:a1 (Unknown)
  192.168.1.42 f4:23:a4:38:b5:76 (Unknown) (DUP: 2)

Všimněte si dvou sad mac adres pomocí stejné IP adresy. Vyvarujte se konfliktu nastavením jedné na druhou IP adresu.

1
Bill Ang

Další příčinou „zprávy Broken Pipe“ je to, že jiný počítač se pokouší použít stejnou IP jako váš hostitel.

Jednoduchý způsob, jak otestovat, zda tuto IP adresu používá někdo jiný:

  1. Vypněte hostitele
  2. ping na stejnou IP, abyste zjistili, zda jiný počítač tuto IP adresu používá

Chcete-li zjistit, které počítače jsou ve vaší síti, můžete použít tento název otázky Unix a Linux: Jak zjistit, jaké další stroje jsou připojeny k místní síti .

0
Josir