ssh -f -N username@rose -R 3722:127.0.0.1:22
Получаем такую картину: на rose в списке открытых портов появляется порт 3722, который на самом деле перенаправляет все пакеты на 22-й порт trick-системы. После этого можно логиниться через ssh на trick из rose:
ssh username@127.0.0.0 -p 3722
А что делать, чтобы тунели были постоянно доступны? Ведь ssh-соединения бывают рвуться и тогда опять необходимо с trick-системы инициировать тунель. А если trick находится в 100 км от Вас? А если их таких у Вас 20? :) Вот тут-то и помогает замечательная вещь - autossh, утилитка занимающаяся тем, что поддерживает поднятые ssh-тунели в рабочем состоянии. Перед её запуском необходимо установить переменную AUTOSSH_PORT, указывающую номер порта, который будет использоваться для heartbeat-пакетов на предмет того - жив ли тунель.
Также, если тунели необходимо поднимать во время старта системы, советуют установить переменную AUTOSSH_GATETIME=0. Переменная AUTOSSH_DEBUG позволит получить из логов дополнительную информацию о ходе процесса.
export AUTOSSH_DEBUG=1
export AUTOSSH_GATETIME=0
export AUTOSSH_PORT=20037
autossh -f -N username@rose -R 3722:127.0.0.1:22
Без ключа -f апликация не отправляется в фон, поэтому данный режим полезен, чтобы разбираться с проблемами при установлении тунеля, если они возникают.
В приведенном выше примере кроме портов rose:3722 и trick:22 поднимается ещё 3 дополнительных (так как установлена переменная AUTOSSH_PORT) - trick:20037, rose:20037, trick:20038, связанных между собой в цепочку для прохождения heartbeat-пакета. Таким образом, что отправляя запрос на trick:20037, пакет приходит на rose:20037, который в свою очередь перенаправляет его дальше на trick:20038. Получается своеобразный "бумеранг", позволяющий следить за тунелем.
Оригинал http://linux.com/archive/feature/134133
Комментариев нет:
Отправить комментарий