Проблема возникла из-за необходимости поддерживать достаточно много времени процесса соединения с сервером Linux, чтобы каждый раз не соединяться и каждый раз не вводит монотонные строки входа в папку проекта на сервере. Для настройки. Настроить нужно, как серверную часть, так и клиентскую, если к примеру соединение производится через PuTTY или через встроенный терминал в рабочем IDE. У меня была проблема последнего характера.
Настройка серверной части
Проблема изначально заключалась в следующем — при подключении к серверу по SSH сессия обрывалась достаточно быстро, задачу можно было решить увеличив интервал таймаута. Соотвествующие настройки можно произвести отредактировав файл sshd_config расположенный в директории /etc/ssh/sshd_config.
В данном файле необходимо найти несколько параметров, которые отвечают за данную опцию:
- TCPKeepAlive — определяет поддержку соединение в активном состоянии, для этого используются специальные контрольные сообщения, посылаемые с определенным интервалом времени. Если директива установлена, обрыв соединения будет вовремя замечен, а соответствующий процесс будет убит. Возможные значения «yes», «no».
- ClientAliveInterval — время простоя клиента в секундах, после которого демон sshd отправляет через защищённый канал запрос клиенту. Директива работает только для протокола 2. По-умолчанию установлен в 0, т.е. клиенту вообще не будут направляться такие запросы.
- ClientAliveCountMax — количество проверок доступности клиента, которые могут оставаться без ответа. Если предел достигнут, sshd завершит сеанс. Данные запросы, отличаются от TCPKeepAlive, так как отправляются через защищённый канал и не могут быть подменены, в то время как TCPKeepAlive такую возможность допускает. СlientAlive полезен, если поведение клиента или сервера зависит от активности соединения. Если ClientAliveInterval равно 15 секундам, а значение ClientAliveCountMax оставлено по-умолчанию, не отвечающие клиенты SSH, будут отключаться приблизительно через 45 секунд. Параметр работает только для протокола версии 2. По-умолчанию установлено значение 3.
В нашем случае установим данные параметры следующим образом:
TCPKeepAlive yes ClientAliveInterval 60 ClientAliveCountMax 180
После этого перезапускаем сервис SSHD
service sshd restart
Это соответствует тому, что TCPKeepAlive проверяет находится ли клиент на линии сервера, ClientAliveInterval — это время простоя в секундах, после которого демон sshd отправляет запрос клиенту, ClientAliveCountMax указывает количество проверок доступности клиента, выше в примере указана поддержка соединения в течении 3 часов (180 минут).
Настройка таймаута соединения в SSH — клиенте PuTTY
В самом клиенте PuTTy также желательно произвести нехитрые настройки. Для этого идем в секцию «Connecton» и выставляем параметр «Seconds between keepalives» равным 60 секундам. Так же можно отметить опцию «Enable TCP keepalives»
Настройка таймаута соединения в WinSCP
Открываем менеджер соединений WinSCP и клацаем на нужное соединением, после жмем на кнопку «Еще»Далее, в открывшемся окне, в ветке «Подключение» указываем необходимое время для таймаута
Как это сделать в своем рабочем IDE
Зависит от IDE, в любом случае в параметрах и настройках в разделе SSH — соединения. В моем случае проблема была с таймаутом соединения терминала IDE NetBeans. Может и есть, где настраивается время, но я не нашел данный параметр в среде, но проблема исчезла после увеличения таймаута со стороны сервера, так что проблемы с клиентом нет.