Перша частина цього - створення тунелю - може бути виконана клієнтським програмним забезпеченням ssh.
У стандартному командному рядку ssh-клієнта (я використовую Mac, але вважаю, що ця поведінка відповідає версіям unix / linux), використання вказує ' -R [bind_address:]port:host:hostport
' для того, щоб порт пересилався з сервера до клієнта (тоді як -L
вперед від клієнта на сервер).
Наприклад, якщо ви хочете переслати порт 80 на віддаленому сервері ssh на локальний веб-сервер, до якого клієнтський комп'ютер отримав би доступ, перейшовши на нього http://localserver:80/
, ви з'єднаєтесь із додатковим аргументом командного рядка -R 80:localserver:80
.
Залежно від ОС клієнтського комп'ютера, існуватимуть різні варіанти налаштування. Якщо ви перебуваєте на будь-якій ОС на базі Unix, я б рекомендував вище, або якщо ви працюєте в Windows, PuTTY може налаштувати такий тип тунелю (Налаштування / SSH / Тунелі - виберіть "Віддалений" замість "Місцевий" ').
Після налаштування тунелю це дозволить будь-кому в тій же мережі, що й ssh-сервер, підключатися до веб-сервера клієнтської мережі. Однак вони не зможуть підключитися до нього через його реальний IP - їм доведеться підключитися до них, http://sshserver:80/
і трафік буде перенаправлений на віддалений сервер, і відповідь повернеться.
Якщо ви хочете отримати доступ до того ж сервера через один і той же URL-адрес, вам потрібно буде додати відповідну запис DNS у мережі ssh-сервера, вказуючи на IP-адресу ssh-сервера. Він не буде доступний при відключенні ssh-клієнта.
Також зауважте, що на ssh-сервері є лише один порт 80, тому ви могли робити це лише для одного віддаленого сервера за один раз. Якщо ви хочете обійти це обмеження, вам доведеться призначити кілька IP-адрес серверу ssh і використовувати необов'язковий аргумент 'прив’язати адресу' в командному рядку ssh, або ви могли поширити сервери на різні порти (зазвичай 8080, 8081, ...) шляхом вибору різних віддалених портів у команді ssh - самі веб-сервери все ще можуть використовувати порт 80.