У мене є невелика локальна мережа, яка копіює на захопленому 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 секунд, поки моє з'єднання знову не активується. (Тож я точно знаю, що НАТ-стани завжди зберігаються.)
Чи можу я зупинити Windows / PuTTY від попереднього відмови від хороших підключень?
Мені здається, ніби SO_KEEPALIVE або щось подібне насправді увімкнено за замовчуванням у Windows, і час очікування виявлення застарілих з'єднань занадто малий. Я хотів би збільшити його на щось більше, ніж на пару секунд, аналогічно тому, як OS X не застрахована від цих коротких тимчасових відключень, якщо відключення становить лише пару сотень секунд і нижче значення -oServerAliveInterval
(раз ServerAliveCountMax
).
mosh
краща альтернатива.)