Я настроил SSH-подключение для запуска программы на удаленном сервере. Программа выводит отладочную информацию на терминал каждые 10 секунд. Если я оставлю окна SSH открытыми на долгое время (скажем, 10 часов), станет ли SSH-подключение неактивным? Как определяется активность в сеансе SSH? Должен ли я вводить/запускать команду каждые x секунд, чтобы сеанс оставался активным?
решение1
Вам не придется делать ничего особенного, SSH не прерывает соединение из-за бездействия. Поэтому период бездействия не определенв пределахСШ.
Однако одно из устройств на сетевом маршруте между вами и вашим сервером может потерять маршрут, и для этого обычно достаточно активности с одной стороны, но не всегда (существуют «пакеты подтверждения прибытия», подтверждения, возвращающиеся на сервер от клиента при использовании TCP).
Трафик с обеих сторон не гарантирует непрерывного соединения, если у вас есть модем DSL и ваш провайдер решает, что вы получаете новый IP-адрес каждый день, соединение будет разорвано.
Вы можете заставить своего клиента регулярно отправлять пакеты, вставив
ServerAliveInterval 5
или /etc/ssh/ssh_config
у вас ~/.ssh/config
будет трафик от клиента к серверу каждые 5 секунд в дополнение к трафику, поступающему от сервера каждые 10 секунд.
Более простое «решение» проблемы сброса соединения DSL-модема — запуск программного обеспечения на стороне сервераtmux
илиscreen
: если соединение разорвано, вы просто снова подключаетесь к серверу по SSH, выполняете команду tmux attach
или screen -r
и можете продолжать бесперебойно просматривать программу сервера.
Использование tmux
/ screen
особенно полезно, если вы не так сильно беспокоитесь о потере соединения, как о последствиях остановки серверной программы в этом случае. Для этого вы также можете перенаправить вывод исходной программы в файл и использовать tail -f
, но это не позволит вам легко взаимодействовать с серверной программой (если это необходимо). tmux
и screen
(в их базовых формах) просты в использовании, но имеют некоторые побочные эффекты, такие как невозможность прокрутки назад с помощью ползунков на вашем графическом терминале (вам нужно использовать сочетания клавиш, чтобы сервер прокручивал назад в своем буфере для этого).
Более гибкое решение для устройств, разрывающих соединение, — это использоватьmosh
. Это использует SSH для обмена некоторой секретной информацией, а затем позволяет повторное присоединение, даже если один или оба IP-адреса меняются. Однако это сложнее настроить и заставить работать.
В вашем случае я бы начал с использования tmux
и вручную переподключился, когда соединение действительно отключится.
решение2
также очень полезно использовать команду SCREEN. С ней вы можете запустить любую команду и не беспокоиться о вашем ssh-подключении.