ssh -f user1@11.22.33.44 -L 1234:127.0.0.1:1234 -N
но, закрываю терминал и все это сбрасывается, потом нужно делать по-новой. как избежать сбрасывания?
Saboteur: по-моему, мне нужно только через ssh. То есть, когда мой скрипт на удаленном сервере делает запрос на 127.0.0.1:1234/something/123, это было через ssh послано на другой удаленный сервер 22.33.44.55:1234/something/123. Все. ssh нужен, чтобы соеденение было зашифровано. только через iptables разве получится?
iptables вообще главный инструмент маршрутизации и проброса, это firewall, который можно все - и форвардить и блокировать и разрешить для отдельных айпишников и вообще все.
Через ssh вы запускаете отдельный дополнительный процесс, специально для этого форварда.
kajidooto: iptables у вас уже скорее всего запущен. Это встроенный в Linux файрвалл, который контролирует сетевую активность.
а запуская в фоне ssh - вы запускаете еще один дополнительный процесс, который делает только одно - висит на порту и перенаправляет данные.
форвадр портов через ssh используют обычно только тогда, когда нет прав админа, чтобы сконфигурировать iptables
kajidooto: В вашем случае скорее всего будет недостаточно. Описание:
Таким образом, команда будет продолжать выполняться в фоновом режиме и после того, как пользователь выйдет из системы.
Впрочем, можете сами проверить.
Мало того, сеанс ssh может прерваться. Поэтому я бы сделал задачу в кроне, которая проверяла и поднимала заново тоннель: Статья на хабре смотреть в самый конец.
"Мало того, сеанс ssh может прерваться." -- ну и что? когда я отключусь от сервера, он и так как бы прирвется. а с & задача ведь будет уже выполняться в фоне.
Начните с простого &.
Если туннель будет падать после того, как вы выйдете из терминала, используйте nohup.
Отключить туннель сможете командой kill.
Если вам нужно держать туннель поднятым постоянно и рестартовать его в случае сбоев, сделайте проверку и поднятие туннеля по крону.
Если нужно иметь возможность включать и выключать, при этом если он отваливается, то поднимать, надо создать сервис.
kajidooto:
вам все верно говорят, но вы не слышите их.
вариантов решения милион.
вам предложили нохуп и энд и это должно по идее сработать но на все есть свои минусы.
я вам давал ссылку на ман там врое по русски написано
Поддерживаем туннели в поднятом состоянии
Ни для кого не секрет, что связь иногда обрывается, туннели при этом будут отваливаться по таймауту.
Чтобы не утруждать себя дополнительным монотонным вбиванием команды на поднятие туннеля и мониторингом этого процесса, автоматизируем его. Смело вводим:
Это лишь ещё один момент особой админской магии… Надеюсь, что лишних вопросов не должно водникнуть. С дополнительными опциями ssh можно ознакомиться в
$ man 1 ssh
По практическому опыту — cron-задания на перезапуск абсолютно недостаточно.
Разве что соединение абсолютно стабильно. В реальной жизни встречается в 0% случаев.
Даже соединённые напрямую кабелем две сетевые карты легко могут потерять n-ное количество пакетов и tcp-соединение «упадёт».
Клиент и сервер будут пребывать в святой уверенности, что всё в порядке, просто вторая сторона ничего не передаёт.
Нужен keepalive.
Примерно так:
Интервал и счётчик — по вкусу.
Добавлять их надо либо в /etc/ssh_config, либо в ~/.ssh/config, либо прямо в команде через опцию -o.
В принципе, судя по man ssh_config, первую из опций можно и опустить. но, на всякий случай, пусть будет.
Будьте вниматеьны, а тем более постарайтесь воспроизвести что-то из предложенного и только после этого говоритьчто именно у вас не получилось. ;)
некоторое время назад запустил этот переброс портов на сервере, до того, как задал вопрос. просто через ssh, без &. сейчас зашел проверить, оказалось, что до сих пор работает.