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 remotehost
serwer z nasłuchiwaniem na porcie 1234 remotehost
i 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, rocks
któ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 > 0
i 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/config
aby były zawsze dostępne
rocks
implementację ... chociaż jest to oczywiście prawdziwa kludge