Mam niepewne połączenie sieciowe między dwoma komputerami: czasami aktywne połączenia TCP są przerywane z przyczyn niezależnych ode mnie. Chcę ustanowić niezawodne połączenie TCP między dwoma komputerami.
Gdyby sieć była niezawodna, po prostu uruchomiłbym ssh -L 1234:localhost:1234 remotehostserwer z nasłuchiwaniem na porcie 1234 remotehosti wskazał klientowi localhost:1234. Ale jeśli połączenie ssh umrze, tak samo będzie z połączeniem przekazywanym. Jak mogę ustawić automatyczne przywracanie połączenia między klientem a serwerem?
Brak rozwiązań:
- Nie dotyczy to aplikacji interaktywnych, więc ekran nie ma zastosowania.
- Tu nie chodzi tylko o automatyczne ponowne podłączanie tunelu SSH la autossh . Chcę nadal używać tego samego tunelowanego połączenia TCP, a nie uruchamiać nowego.
- Zasadniczo VPN załatwi sprawę. Ale wydaje się przesada, gdy chcę tylko jedno połączenie TCP i chciałbym rozwiązania, które działa, nawet jeśli nie mam uprawnień roota po obu stronach.
Mam słabą pamięć programu, rocksktóry to właśnie zrobił, ale wydaje się, że spadł z powierzchni sieci. Najbardziej interesuje mnie Linux po obu stronach (choć spodziewałbym się, że program na tym poziomie będzie przenośny dla innych unikatów), ale jeśli znasz program, który działa między QNX i VMS, tym lepiej.
scp. Odpowiadałem w / ssh keepalives na podstawie twojego przykładu przekierowania portów. Re: flaky downstream hop, niewiele możesz zrobić, oprócz stworzenia sesji ssh z keepalives, które są bardziej tolerancyjne (tj. Pozwalają na więcej upuszczonych keepalives z ServerAliveInterval > 0i ServerAliveCountMax > 3). NAT wymaga niższych odstępów czasu podtrzymania. Kluczową kwestią jest określenie, na czym polega problem i odpowiednie dostosowanie. Ustaw opcje, .ssh/configaby były zawsze dostępne
rocksimplementację ... chociaż jest to oczywiście prawdziwa kludge