У меня ненадежное сетевое соединение между двумя компьютерами: иногда активные соединения TCP теряются по независящим от меня причинам. Я хочу установить надежное TCP-соединение между двумя компьютерами.
Если бы сеть была надежной, я бы просто запустил ssh -L 1234:localhost:1234 remotehost
сервер, прослушивающий порт 1234 remotehost
, и указал бы на клиента localhost:1234
. Но если соединение ssh умирает, то и переадресованное соединение. Как я могу организовать автоматическое восстановление соединения между клиентом и сервером?
Non-решения:
- Это не для интерактивных приложений, поэтому экран не применяется.
- Это не просто автоматическое переподключение SSH-туннеля, а-ля autossh . Я хочу продолжать использовать то же туннельное TCP-соединение, а не начинать новое.
- В принципе, VPN может помочь. Но это кажется излишним, когда я просто хочу одно TCP-соединение, и я бы хотел, чтобы решение работало, даже если у меня нет прав root ни с одной стороны.
У меня тусклое воспоминание о программе, которая называется rocks
именно это, но кажется, что она упала с лица сети. Я в основном интересуюсь Linux с обеих сторон (хотя я ожидаю, что программа на этом уровне будет переносимой на другие устройства), но если вам известна программа, которая работает между QNX и VMS, тем лучше.
scp
. Я отвечал w / ssh keepalive на основе вашего примера переадресации портов. Re: flaky downstream hop, вы ничего не можете сделать, кроме как создать ssh-сессию с keepalive, которые являются более терпимыми (т. Е. Разрешить больше отброшенных keepalive с помощью ServerAliveInterval > 0
and ServerAliveCountMax > 3
). NAT требует меньших интервалов keepalive. Ключевой вопрос заключается в том, чтобы определить, в чем заключается проблема, и соответственно адаптировать ее. Поместите варианты, .ssh/config
чтобы они всегда были для вас
rocks
реализацию ... хотя это, очевидно, реальное препятствие