Mam małą sieć lokalną, która łączy się w niewoli Wi-Fi, i używam jej ssh
w OS X z -oServerAliveInterval=240
PuTTY 0.62 w Windows 7 Professional do nawiązywania połączeń z moim Linode, Hetzner i innymi serwerami.
Za pomocą PuTTY wybieram Connection
→ Sending of null packets to keep session active
do 240. Enable TCP keepalives (SO_KEEPALIVE option)
Domyślnie jest wyłączone.
Kiedy mój internet jest chwilowo wyłączony przez około minutę (trzeba ponownie uwierzytelnić na portalu dostępowym), PuTTY prawie zawsze traci wszystkie otwarte sesje ssh, które mam, a zwłaszcza te, w których była jakakolwiek aktywność, ale OpenSSH na OS X nigdy nie traci żadnych sesji, dopóki mój Internet jest ponownie włączony w ciągu około minuty lub dwóch, nawet jeśli faktycznie próbuję wpisać coś w ssh i nie widzę odpowiedzi przez całe 60 sekund, dopóki moje połączenie nie zostanie ponownie aktywne. (Więc wiem na pewno, że stany NAT są zawsze zachowywane).
Czy mogę powstrzymać system Windows / PuTTY przed zapobiegawczym odrzucaniem dobrych połączeń?
Wydaje mi się, że SO_KEEPALIVE lub niektóre z nich są domyślnie włączone w systemie Windows, a limit czasu na wykrywanie nieaktualnych połączeń jest zdecydowanie za mały. Chciałbym zwiększyć go do wartości przekraczającej kilka sekund, podobnie jak system OS X jest odporny na te krótkie tymczasowe przerwy, o ile przerwa wynosi tylko kilkaset sekund i jest mniejsza niż wartość -oServerAliveInterval
(razy ServerAliveCountMax
).
mosh
jest lepszą alternatywą.)