Ssh-Туннели — Переадресация Порта

Не всегда возможно, да и не всегда необходимо построить полноценный туннель с интерфейсной парой адресов.

Иногда нам просто нужно «перенаправить» очень конкретные порты.

Здесь важно понимать, что туннель может быть организован как изнутри сети, к ресурсам которой вы хотите получить доступ, так и к внешнему SSH-серверу.

Вы также можете создать туннель от хоста в Интернете до пограничного SSH-сервера в сети, чтобы получить доступ к внутренним ресурсам.

Так.

Чтобы.

Мы строим туннель из сети в мир.

 $ ssh -f -N -R 2222:10.11.12.13:22 [email protected]
теперь ввожу 99.88.77.66 на хосте:
 $ ssh -p2222 localhost
мы попадем на хост 10.11.12.13. Таким же образом вы можете получить доступ к любому другому ресурсу, например:
 $ ssh -f -N -R 2080:10.11.12.14:80 [email protected]
Введя 99.88.77.66 на хосте:
 $ w3m -dump  http://localhost:2080 
мы получаем дамп веб-ресурса за 10.11.12.14. Мы строим туннель из мира в сеть.

 $ ssh -f -N -L 4080:192.168.0.10:80 [email protected]
Аналогично введите на своем хосте:
 $ w3m -dump  http://localhost:4080 
и получаем доступ к веб-ресурсу узла 192.168.0.10, который находится за хостом 88.77.66.55. Поддержание туннелей на высоте Ни для кого не секрет, что соединение иногда обрывается, и туннели отваливаются из-за таймаута.

Чтобы не утруждать себя дополнительным монотонным вводом команды на подъем тоннеля и контролем этого процесса, мы его автоматизируем.

Смело вступайте: $ кронтаб -е и создайте расписание примерно так:

 TUNCMD1='ssh -f -N -R 2222:10.11.12.13:22 [email protected]'
 TUNCMD2='ssh -f -N -R 2080:10.11.12.14:80 [email protected]'
 
 */5 * * * * pgrep -f "$TUNCMD1" &>/dev/null || $TUNCMD1
 */5 * * * * pgrep -f "$TUNCMD2" &>/dev/null || $TUNCMD2
Давайте сохраним.

Мы проверяем

 $ crontab -l
что график принят. Это просто еще один момент особого админского волшебства.

Надеюсь, лишних вопросов не возникнет. Дополнительные параметры ssh можно найти в

 $ man 1 ssh
Практический опыт показывает, что задания cron для перезапуска абсолютно недостаточно.

Если только соединение не будет абсолютно стабильным.

В реальной жизни это встречается в 0% случаев.

Даже две сетевые карты, соединенные напрямую кабелем, могут запросто потерять n-ное количество пакетов и TCP-соединение «упадет».

Клиент и сервер будут свято уверены, что всё в порядке, другая сторона просто ничего не передает. Требуется поддержка активности.

Как это:

 TCPKeepAlive yes
 ServerAliveInterval 300
 ServerAliveCountMax 3
Интервал и счетчик – по вкусу.

Их нужно добавить либо в /etc/ssh_config, либо в ~/.

ssh/config, либо непосредственно в команде с помощью опции -o. В принципе, судя по man ssh_config, первый из вариантов можно опустить.

но, на всякий случай, пусть будет так.

Теги: #настройка Linux #ssh-туннель

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.