Ich habe ServerAliveInterval
und bei wenigen Rechnern auch ClientAliveInterval
in SSH-Client / Server-Konfigurationsdateien auf 540 gesetzt (ich nehme an, es wäre keine gute Idee, mehr zu setzen). Ich arbeite mit vielen SSH-Sitzungen, die derzeit nach wenigen Minuten einfrieren.
Wie kann ich es reparieren? Ich möchte, dass eine Sitzung überhaupt nicht einfriert. Wenn ich also eine Sitzung um 8 Uhr eröffne und sie beispielsweise 4 Stunden lang nicht benutze, um sie um 12 Uhr immer noch zu verwenden, ohne dass ich mich erneut anmelden muss .
TCPKeepAlive yes
?TCPKeepAlive yes
- hängt von der Maschine ab.autossh
...screen
stattdessen verwenden. Aber ich stimme Ihrer Frage immer noch zu, weil ich nach ein oder zwei Minuten das gleiche Problem habe.Antworten:
Die Änderungen, die Sie vorgenommen haben
/etc/ssh/ssh_config
und/etc/ssh/sshd_config
die korrekt sind, haben jedoch keine Auswirkungen.Nehmen Sie die folgenden Konfigurationsänderungen auf dem Client vor, damit Ihre Konfiguration funktioniert:
/etc/ssh/ssh_config
ServerAliveInterval Der Client sendet alle 100 Sekunden ein Null-Paket an den Server, um die Verbindung aufrechtzuerhalten
NULL-Paket Wird vom Server an den Client gesendet. Das gleiche Paket wird vom Client an den Server gesendet. Ein TCP-NULL-Paket enthält kein Steuerungsflag wie SYN, ACK, FIN usw., da der Server keine Antwort vom Client benötigt. Das NULL-Paket wird hier beschrieben: https://tools.ietf.org/html/rfc6592
Konfigurieren Sie dann den sshd-Teil auf dem Server.
/etc/ssh/sshd_config
ClientAliveInterval Der Server wartet 60 Sekunden, bevor er ein Nullpaket an den Client sendet, um die Verbindung aufrechtzuerhalten
TCPKeepAlive Stellt sicher, dass bestimmte Firewalls keine inaktiven Verbindungen trennen .
ClientAliveCountMax Server sendet lebendige Nachrichten an den Client, obwohl er keine Nachricht vom Client zurückerhalten hat.
Starten Sie zum Schluss den
ssh server
service ssh restart
oderservice sshd restart
abhängig davon, auf welchem System Sie sich befinden.quelle
ServerAliveCountMax
ist auch nötig, um so zuverlässig wie möglich zu sein. Und wenn beideServerAliveInterval
undClientAliveInterval
niedrig genug sind, glaube ich nicht, dass es irgendeinen Bedarf dafür geben wirdTCPKeepAlive
. Darüber hinaus können Middleboxen ihren Status verlieren, auch wenn alle zuvor genannten Einstellungen genau richtig konfiguriert wurden. Es kann hilfreich sein, MPTCP zu verwenden (wenn es sowohl vom Client als auch vom Server unterstützt wird).ClientAliveInterval
undClientAliveCountMax
ssh Serveroptionen sind, also dafür gedachtsshd_config
und nichtssh_config
ssh_config
der neuen Sitzungen wird diese Datei gelesen. Die/etc/environment
Datei ist eine andere Sache, deren FormatVAR="value"
ohne Leerzeichen somitVAR = "value"
ungültig wäre. Die Beschaffung auf/etc/ssh/ssh_config
diese Weise lautet also:Port 22
oderHost *
sie wird als Befehle behandeltPersönlicher Vorschlag:
screen
auf dem Remote-Host verwenden; Ihre Verbindung bleibt so lange bestehen, wie sie in einem Terminal aktiv ist.Folgendes füge ich normalerweise hinzu,
/etc/screenrc
um meine Bildschirmsitzungen schnell zu identifizieren:EDIT: Hinweise.
Die
hardstatus
Zeichenfolge zeigt eine untere Statuszeile wie diese:Der Scrollback-Puffer wird statt der üblichen 1000-1500 (je nach Verteilung) auch auf 8192 Zeilen erweitert.
quelle
screenrc
Datei erklären ? Wie konfiguriere ich das System den Startbildschirm / tmux direkt nach der Anmeldung?screen
hält Ihre SSH-Verbindung nicht am Leben. Es führt Prozesse in einem virtuellen Terminal aus, unabhängig von dem Benutzerterminal, mit dem Sie eine Verbindung herstellen,ssh
sodass der Prozess nicht von Ihrer Verbindung abhängt. Sie verlieren weiterhin Ihressh
Verbindung, bis sie behoben ist.screen
, ich rate neuen Benutzern, damit zu beginnentmux
.Mit OpenSSH:
Sie müssen aktivieren
Sowohl in Ihrem Client ssh_config (z. B.
/etc/ssh/ssh_config
oder in~/.ssh/config
) als auch auf Ihrem Ziel-SSH-Server, auf dem OpenSSH ausgeführt wird (z. B. / etc / ssh / sshd_config).Jedes Mal, wenn Ihre Verbindung inaktiv ist, sendet OpenSSH ein Dummy-Paket an Ihren Zielhost ...
quelle
The default is ''yes'' (to send TCP keepalive messages), and the server will notice if the network goes down or the client host crashes.
...this means that connections will die if the route is down temporarily, and some people find it annoying.
linux.die.net/man/5/sshd_config"[…] network goes down […] client host crashes […] route is down […]"
gravierende Fehler, die keine SSH-Konfiguration abfangen kann. Das Hauptproblem sind inaktive SSH-Sitzungen, keine Netzwerkfehler. Um es zusammenzufassen: - Aktivieren SieTCPKeepAlive yes
sowohl den Server als auch den Client. - SetClientAliveInterval
auf dem Server - SetIdleTimeout
auf dem Server - SetClientAliveCountMax
Das sollte den Trick machen ...Wenn das Problem ein hibernated Laptop oder eine weniger als Präfekt Netzwerkverbindung ist, würde ich empfehlen , mit
mosh
welcher läuft überssh
und ermöglicht die automatische Wiederverbindung.Von der Website :
In Kombination mit
tmux
(oder älterenscreen
) ermöglicht dies mir, eine Verbindungssh
von meinem Laptop zu einem Server herzustellen und tagelang in Verbindung zu bleiben, selbst wenn ich die WLAN-Verbindung ändere und mobile Datenausfälle überlebe.quelle
Überprüfen Sie Ihre SSHD-Konfiguration auf dem Host-Computer
/etc/sshd_config
für dieIdleTimeout
Einstellung .quelle