Как перенаправить веб-сайт в сеть с ограниченным доступом через туннель ssh

Для ваших целей вы программируете crontab на полдень, а затем засыпаете с произвольным интервалом от 0 до 120 секунд (два часа).

Итак, строка crontab для запуска команды каждый день в полдень:

* 12 * * * command.sh

, а затем вы запускаете command.sh с:

sleep $(( RANDOM % (120*60) ))

, альтернатива делает:

at noon + $(( RANDOM % 120 )) minutes tomorrow

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

0
07.11.2018, 16:52
2 ответа

Туннели SSH полезны для пересечения незащищенных сетей, обеспечивая шифрование между концами -и -при соединении двух конечных точек, находящихся в разных сетях.

Насколько я могу судить (благодаря комментариям ), у вас есть:

  • Локальный хост -А :ваш localhost,в вашей локальной сети (, вероятно, за брандмауэром/NAT)

  • Общедоступный хост -B :сервер aws

  • Не -общедоступный хост -C :в ограниченной удаленной сети (, вероятно, за брандмауэром/NAT)

  • Не -общедоступный хост -D :, который вы называете deviceIP, который прослушивает порт 80и находится в удаленной ограниченной сети

Если вы хотите подключить свой хост A к хосту D, позволяя вашему браузеру подключаться к нему через порт 80, вам нужно:

  1. Туннель от хоста -A к хосту -B, который:

    • Позволяет хосту -Прослушивать порт8080

    • Отправляет трафик с этого порта через туннель

    • На хосте -B (aws), перенаправляет трафик, идущий из туннеля, на локальный (т.е. на хосте -B )порт15872(Я взял из ваших комментариев; вы можете выбрать любой доступный порт; просто убедитесь, что вы используете один и тот же код во всех командах)

    # Execute on host-A
    $ ssh -L 8080:localhost:15872 user@host-B
    
  2. Туннель от хоста -C к хосту -B, который:

    • Позволяет хосту -B прослушивать порт15872

    • Отправляет трафик с этого порта через туннель

    • На хосте -C (ваш сервер Linux )перенаправляет этот трафик на порт 80на хосте -D

    # Execute on host-C
    $ ssh -R *:15872:host-D:80 user@host-B
    

Таким образом, запросы к хосту -A на порту 8080будут туннелироваться на хост -B, перенаправляться на порт 15872на том же хосте -B, туннелироваться на хост -C и перенаправляется с хоста -C на порт 80хоста -D.

5
28.01.2020, 02:16

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

Это создаст прослушивающий сокет на клиентском порту 8080 и направит его через туннель sshна deviceIPпорт 80 :

.
ssh -L 8080:deviceIP:80 user@aws
2
28.01.2020, 02:16

Теги

Похожие вопросы