Ich habe bei mir zu Hause das Problem, dass SSH Verbindungen regelmäßig einfach einfrieren, wenn die Verbindung einfach offen ist und keine Daten übertragen werden.
Das ist natürlich extrem nervig, wenn man gerade einen Editor wie vim
offen hat
und nochmal kurz entwas nachschauen will. Anscheinend passiert dies, weil der Router
bei einem NAT inaktive Verbindungen trennt.
Zum Glück kann man in der SSH-Konfiguration einen Keep-Alive Intervall definieren, welcher dann einfach jede Minute ein Paket überträgt. So ist die Verbindung aktiv und wird nicht gekappt.
Es gibt zwei Möglichkeiten den Keep-Alive zu konfigurieren.
Konfiguration auf dem Server
Setzen man die Keep-Alive Einstellungen auf dem Server, gilt sie automatisch für jeden
Client, welcher sich mit dem Server verbindet. Dies habe ich für meinen Root-Server
gemacht. Dazu muss man nur folgende zwei Zeilen in die Datei /etc/ssh/sshd_config
eintragen:
ClientAliveInterval 60
ClientAliveCountMax 2
Damit sendet der SSH Server jede Minute ein Paket an den Client. Wenn zwei Pakete nicht beantwortet werden, wird die Verbindung für tot erklärt.
Konfiguration auf dem Client
Wenn man sich regelmäßig mit unterschiedlichen SSH-Servern verbindet, kann man die Optionen auch auf dem Client konfigurieren. So muss man die Einstellungen nicht bei allen SSH-Servern setzten
Dazu trägt man in die Datei ~/.ssh/config
folgendes ein:
Host *
ServerAliveInterval 60
ServerAliveCountMax 2
Zusätzlich sollte man noch die richtigen Dateiberechtigungen setzen
chmod 600 ~/.ssh/config