Подтвердить что ты не робот

Сохранять сеанс SSH во время сна компьютера?

Возможно ли сохранить сеанс SSH во время сна компьютера? Когда я положил свой Mac (Lion) на короткий промежуток времени, а затем разбудил сессию еще живым, но если я оставлю ее в одночасье, соединение будет закрыто.

Я попытался установить:

ClientAliveInterval 3600
ClientAliveCountMax 10

тот же результат

Почему сессия "выживает" в течение короткого периода времени? Как я могу контролировать этот тайм-аут?

4b9b3361

Ответ 1

Я нашел ответ, который зависит от настроек tcp keepalive:

Список доступных настроек TCP (FreeBSD 4.8 вверх и 5.4):

sysctl -A | grep net.inet.tcp
  • net.inet.tcp.keepidle - количество времени в миллисекундах, когда соединение (TCP) должно быть простаивающим до того, как отправляются проверочные тесты (если они включены).

  • net.inet.tcp.keepintvl - Интервал, в миллисекундах, между зондами keepalive, отправленными на удаленные компьютеры. После отправки пробников TCPTV_KEEPCNT (по умолчанию 8) без ответа соединение (TCP) удаляется.

  • net.inet.tcp.always_keepalive - Предположим, что SO_KEEPALIVE установлен во всех TCP-соединениях, ядро ​​будет периодически отправлять пакет на удаленный хост, чтобы проверить, что соединение все еще не работает.

Поэтому формула для вычисления максимального времени неактивного соединения TCP следующая:

net.inet.tcp.keepidle + (net.inet.tcp.keepintvl x 8)

результат равен миллисекундам. Поэтому, установив

net.inet.tcp.keepidle = 10000 net.inet.tcp.keepintvl = 5000 net.inet.tcp.always_keepalive = 1 (must be 1 always)

система отключит вызов, если TCP-соединение мертво для: 10000 + (5000 x 8) = 50000 msec (50 секунд). Чтобы система запомнила эти настройки при запуске, вы должны добавить их в /etc/sysctl.conf файл

Ответ 2

Если вам требуется элегантное решение для сохранения удаленного сеанса, вы должны проверить его значение screen. При использовании этой утилиты вы можете поддерживать работу своих удаленных программ даже после выхода из системы или выключения компьютера. Затем вы можете повторно подключить свой доступный сеанс screen позже.

Экран требует некоторого времени для изучения основ, но когда вы получите его, вы увидите, насколько он силен.

Вы можете проверить эту ссылку для учебника по использованию экрана: http://www.thegeekstuff.com/2010/07/screen-command-examples/

Ответ 3

Другим возможным решением является mosh, что не является точно SSH, но поддерживает соединение с оболочкой, когда ваш компьютер переходит в режим сна, или даже после изменения IP-адресов.

Ответ 4

Другим решением является использование autossh, который в основном контролирует вашу сессию ssh и снова соединяется, как только (например, после цикла сна, но также, если вы потеряете соединение WiFi некоторое время, например). Это особенно хорошо работает для переадресованных портов/ssh-туннелей.

Вот учебник: http://linuxaria.com/howto/permanent-ssh-tunnels-with-autossh.

Ответ 5

Иногда сеансы закрываются, когда данные не передаются. Выход из htop open обычно препятствует закрытию моих ssh-соединений, а также предоставляет полезную информацию в реальном времени.

Keepalive должен делать то же самое. Возможно, вы попытаетесь сократить интервал (задержку между двумя keepalives) примерно до 60, посмотрите, не изменит ли он что-либо.