Tengo una pequeña red local que se complementa con un WiFi cautivo, y lo uso ssh
en OS X con -oServerAliveInterval=240
y PuTTY 0.62 en Windows 7 Professional para establecer conexiones a mi Linode, Hetzner y otros servidores.
Con PuTTY, selecciono Connection
→ Sending of null packets to keep session active
a 240. El Enable TCP keepalives (SO_KEEPALIVE option)
está apagado, según los valores predeterminados.
Cuando mi Internet está temporalmente fuera de servicio durante aproximadamente un minuto (tengo que volver a autenticarme en el portal cautivo), PuTTY casi siempre pierde todas las sesiones ssh abiertas que tengo, y especialmente aquellas en las que hubo algún tipo de actividad, pero OpenSSH en OS X nunca pierde ninguna sesión, siempre que mi Internet vuelva a funcionar en aproximadamente un minuto o dos, incluso si realmente intento escribir algo en ssh, y no veo respuesta durante los 60 segundos más o menos, hasta que mi conexión vuelva a estar activa. (Por lo tanto, estoy seguro de que los estados NAT siempre se conservan).
¿Puedo evitar que Windows / PuTTY descarte preventivamente buenas conexiones?
Me parece que SO_KEEPALIVE o algo así está activado de forma predeterminada en Windows, y el tiempo de espera para detectar conexiones obsoletas es demasiado pequeño. Me gustaría aumentarlo a algo más de un par de segundos, de manera similar a cómo OS X es inmune a estas breves interrupciones temporales, siempre que la interrupción sea de solo un par de cientos de segundos y esté por debajo del valor de -oServerAliveInterval
(veces ServerAliveCountMax
).
mosh
es una mejor alternativa)