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