SSH: обрыв сессии при бездействии

Автор: | 01/29/2016
 

ssh_logoПри бездействии в терминале с открытой SSH-сессией — через некоторое время она разрывается с сообщением вида:

...
root@dac754f67def:/etc/nginx# Write failed: Broken pipe
03:14:15 [username@hostname ~] $

Поддержкой SSH-сессии управляют два параметра:

  • ServerAliveInterval — кол-во секунд, через которое клиент будет отправлять NULL-пакет для поддержки сессии;
  • ClientAliveInterval — наоборот, кол-во в секундах, через которое сервер будет отправлять пакет клиенту.

ServerAliveInterval по умолчанию не установлен, и его значение == 0.

Что бы применить настройки ко всем хостам и всем локальным пользователям — изменения нужно вносить в файл /etc/sshd_config (OS X, FreeBSD (?)) и /etc/ssh/sshd_config (RHEL/CentOS).

Например:

$ sudo cat /etc/sshd_config | grep Alive
#TCPKeepAlive yes
#ClientAliveInterval 0
#ClientAliveCountMax 3
ClientAliveInterval 60

Либо — добавить в файл ~/.ssh/config параметры для одного хоста и пользователя:

$ cat ~/.ssh/config
Host venti
     HostName venti.setevoy.org.ua
     User setevoy
     ServerAliveInterval 60

Или — для всех хостов и всех пользователей:

Host *
    ServerAliveInterval 60

Подробнее:

$ man -k sshd_config
sshd_config(5)           - OpenSSH SSH daemon configuration file
$ man 5 sshd_config

Либо тут: http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man5/sshd_config.5?query=sshd_config&sec=5