Назад | Перейти на главную страницу

Как создать постоянную переадресацию портов с помощью ssh?

В настоящее время я использую ssh для пересылки нескольких таких портов:

Есть 3 машины:

A-host>ssh -R 636:C-host:636 -R 8080:C-host:8080 root@B-host

Вопрос в том, как сделать это туннелирование постоянным, чтобы восстановить его даже после перезапуска той или иной машины.

Я знаю, что для этого, вероятно, потребуется autossh, но это еще не все.

Вот мое текущее решение, если вы знаете лучшее, я буду рад принять его.

На машине, запускающей туннелирование:

/etc/cron.d/autossh
@reboot autossh -f -nNT -R 3269:host-providing:3269 firewalled-host &

Теперь firewalled-host может подключиться к localhost: 3269 для доступа к службе, которая раньше была недоступна.

Добавить autossh команда для службы, которая управляет системными службами.

Большинство установок Linux используют init, читая конфигурацию того, с чего начать /etc/inittab, строка что-то вроде rc:2:respawn:autossh <options> >>/var/log/autosshoutput 2>&1 сделает свое дело. Это будет (если вы находитесь на уровне запуска 2, что является обычным случаем для работающей системы Linux в наши дни) запускает процесс при загрузке и перезапускает его, если он умирает. Если вы хотите, чтобы он запустился до следующей перезагрузки, запустите telinit чтобы указать процессу инициализации перечитать его конфигурацию. См. Страницу руководства для inittab Больше подробностей.

Некоторые дистрибутивы Linux перешли на использование выскочки для управления тем, что используется init (среди других функций выскочки, поскольку он делает больше, чем когда-либо делал init) - вы легко найдете множество документации по этому поводу.