У меня есть небольшая локальная сеть, которая использует встроенный WiFi, и я использую ssh
в OS X с -oServerAliveInterval=240
PuTTY 0.62 в Windows 7 Professional для установления соединений с моим Linode, Hetzner и другими серверами.
С помощью PuTTY я выбираю Connection
→ Sending of null packets to keep session active
до 240. По Enable TCP keepalives (SO_KEEPALIVE option)
умолчанию он выключен.
Когда мой интернет временно не работает в течение приблизительно одной минуты (необходимо пройти повторную аутентификацию на портале авторизации), PuTTY почти всегда теряет все открытые сеансы SSH, которые у меня есть, и особенно те, где были какие-либо действия, но OpenSSH на OS X никогда не теряет ни одной сессии, пока мой интернет работает в течение примерно минуты или двух, даже если я на самом деле пытаюсь что-то набрать в ssh и не вижу ответа целых 60 секунд или около того, пока мое соединение снова не станет активным. (Так что я точно знаю, что состояния NAT всегда сохраняются.)
Могу ли я остановить Windows / PuTTY от упреждающего отказа от хороших соединений?
Мне кажется, что SO_KEEPALIVE или что-то подобное на самом деле включено в Windows по умолчанию, и время ожидания для обнаружения устаревших соединений слишком мало. Я хотел бы увеличить его до нескольких секунд, аналогично тому, как OS X защищена от этих кратковременных временных отключений, если сбой составляет всего пару сотен секунд и ниже значения -oServerAliveInterval
(раз ServerAliveCountMax
).
mosh
это лучшая альтернатива.)