it-swarm.com.de

Was bedeutet die Nachricht "Broken Pipe" in einer SSH-Sitzung?

Manchmal wird meine SSH-Sitzung mit einem Write failed: Broken pipe Botschaft. Was bedeutet das? Und wie kann ich meine Sitzung offen halten?

Ich weiß über screen Bescheid, aber das ist nicht die Antwort, nach der ich suche. Ich denke, dies ist eine sshd Konfigurationsoption.

107
Peter Stuifzand

Möglicherweise schließt Ihr Server Verbindungen, die zu lange inaktiv sind. Sie können entweder Ihren Client (ServerAliveInterval) oder Ihren Server (ClientAliveInterval) aktualisieren.

 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.

So aktualisieren Sie Ihren Server (und starten Sie sshd neu)

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

Oder clientseitig:

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

Eine alternative Lösung wäre die Verwendung von mosh - der mobilen Shell . Im Gegensatz zu ssh stellt es eine Verbindung über UDP her und unterstützt Roaming. Sie können Ihre Sitzung zu Hause beginnen, Ihren Laptop aussetzen, zur Arbeit/zu Freunden/überall dort bringen, wo Sie sonst noch Internet haben, Ihren Laptop aufheben und weiterarbeiten, als wäre nichts passiert. Dies ist besonders nützlich, wenn Sie eine schlechte Internetverbindung haben: Es zeigt sofortiges Feedback, wenn Ihre Tastenanschläge den Server nicht erreichen, und versucht kontinuierlich, die Verbindung wiederherzustellen.

Installation und Einrichtung sind einfach: Es ist jetzt in allen aktuellen Linux-Distributionen (plus einigen Nicht-Linux-Distributionen) enthalten und koordiniert die Sitzungsinitialisierung und -authentifizierung über eine vorherige SSH-Verbindung. Wenn Sie also eine Verbindung über ssh [email protected] Herstellen können, können Sie sehr wahrscheinlich eine Verbindung mit mosh herstellen, indem Sie einfach mosh [email protected] Aufrufen, wenn die mosh-Pakete an beiden Enden installiert sind.

Der Hauptgrund für Verbindungsfehler ist, dass Sie den Server über einen UDP-Port (Standardbereich: 60000-61000) erreichen müssen, damit mosh funktioniert. Wenn sich der Server also hinter einer Firewall befindet, haben Sie größtenteils Pech, wenn Sie selbst keine Löcher in die Serverwand schlagen können ( Auswirkungen auf die Sicherheit ).

6
Perseids

Wenn Sie eine längere Verbindungsdauer wünschen, fügen Sie im Client Folgendes hinzu:

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

ServerAliveCountMax ist standardmäßig auf 3 eingestellt. Sobald sich ServerAliveInterval 3 kleine Informationspakete an Ihren Server gesendet hat, wird er sich automatisch abmelden. Wenn Sie den Wert auf 1200 setzen, muss dieser Vorgang mindestens 1200 Mal ausgeführt werden. Kurz gesagt, Sie sollten mindestens 30 * 1200 Sekunden (10 Stunden) verbunden sein.

5
Francisco Costa

Dies bedeutet normalerweise, dass Ihre Netzwerkverbindung (TCP) zurückgesetzt wurde. Z.B. Ihr Internetprovider hat Sie erneut verbunden oder so etwas.

2
maxschlepzig

Ich hatte das gleiche Problem, aber es ist nicht wie erwartet. Wenn Sie feststellen, dass ein anderer Server im selben Netzwerk nach derselben IP-Adresse sucht, tritt das gleiche Problem auf. Um dies zu lösen, müssen Sie überprüfen, ob andere Server dieselbe IP-Adresse verwenden. Dies kann mit dem Befehl arp erfolgen.

Ich verwende Debian. Hier ist ein Beispiel der Befehle, mit denen ich feststelle, ob ein anderer Server tatsächlich dieselbe IP-Adresse verwendet

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)

Sie werden zwei Sätze von Mac-Adressen bemerken, die dieselbe IP-Adresse verwenden. Vermeiden Sie Konflikte, indem Sie eine andere IP-Adresse festlegen.

1
Bill Ang

Eine weitere Ursache für die "Broken Pipe-Nachricht" ist, dass ein anderer Computer versucht, dieselbe IP-Adresse wie Ihr Host zu verwenden.

Ein einfacher Weg, um zu testen, ob jemand anderes diese IP verwendet:

  1. Schalten Sie Ihren Host aus
  2. pingen Sie dieselbe IP-Adresse, um festzustellen, ob ein anderer Computer diese IP-Adresse verwendet

Um herauszufinden, welche Computer sich in Ihrem Netzwerk befinden, können Sie diesen Unix- und Linux-Fragentitel verwenden: So finden Sie heraus, welche anderen Computer mit dem lokalen Netzwerk verbunden sind .

0
Josir