Wie löse ich eine SSH-Verbindung auf, die vom Remote-Host aufgrund von Inaktivität geschlossen wurde?

14

Ich versuche gerade, zu einem Colo zu ssh, nach 1 bis 2 Minuten Inaktivität bekomme ich:

superuser@thecolo:~$ Connection to 10.123.45.67 closed by remote host.
Connection to 10.123.45.67 closed.
mylocalmac:~ superuser$

Solange ich etwas in das SSH-Terminal tippe, bleibt die Verbindung erhalten. Sobald 1 bis 2 Minuten Inaktivität aufgetreten sind, erhalte ich die obige Meldung. Die Maschine, mit der ich eine Verbindung herstellen möchte, ist eine 64-Bit-Server-Edition von Ubuntu 12.04.1 LTS. Es ist kein physischer Server, sondern eine Gast-VMware. Ich sshing von einem Mac-Terminal.

Bitte verwechseln Sie diese Frage nicht mit ähnlichen Fragen auf dieser Website mit dem Schlüsselwort ssh_exchange_identificationdarin, sie hat nichts damit zu tun .

Thierry Lam
quelle

Antworten:

17

Fügen Sie Ihrem $ HOME / .ssh / config Folgendes hinzu, und alle Ihre SSH-Verbindungen senden alle 30 Sekunden ein TCPKeepAlive:

TCPKeepAlive yes
ServerAliveInterval 30
balkian
quelle
Konfigurationsdatei auf Server nicht gefunden
Insoftservice
Sie können die Datei in Ihrem Home-Verzeichnis erstellen, wenn sie nicht vorhanden ist
balkian vor
9

Wenn Sie eine Verbindung von einem Linux-Computer aus herstellen, können Sie einige Optionen direkt über die Befehlszeile verwenden

TCPKeepAlive: Hiermit wird die Option KEEPALIVE des TCP / IP-Protokolls verwendet, um eine Verbindung nach einem bestimmten Inaktivitätsintervall am Leben zu erhalten. Auf den meisten Systemen bedeutet dies 2 Stunden. Mit der an SSH übergebenen Option TCPKeepAlive sendet der SSH-Client ein verschlüsseltes Paket an den SSH-Server, sodass Ihre TCP-Verbindung weiterhin funktioniert.

ssh -o TCPKeepAlive=yes [email protected]

ServerAliveInterval: Hiermit wird ein von Ihnen angegebenes Zeitlimit in Sekunden festgelegt. Wenn keine Pakete vom SSH-Client an den SSH-Server gesendet werden, sendet SSH eine verschlüsselte Anforderung an den Server für eine TCP-Antwort. So stellen Sie diese Anfrage alle 30 Sekunden:

ssh -o ServerAliveInterval=30 [email protected]

Quelle

Ricciocri
quelle
0

Sie müssen "Keepalive"

Abhängig von Ihrem Kunden ist dies vielleicht trivial oder einfach - es sollte nicht schwieriger sein!

Bei Kitt handelt es sich beispielsweise um die Verbindungsoption (Keepalive auf einen Wert ungleich Null setzen).

Andrew
quelle
Wo setze ich das Keepalive? Auf dem Server oder von meinem Mac? Wo soll ich diesen Wert einstellen und was ist der empfohlene Wert?
Thierry Lam
Keepalive wird auf dem Client sein ... in Ihrem Fall auf Ihrem Mac. Irgendwo wird es eine Option geben!
Andrew