Переадресація зворотного порту SSH за допомогою PuTTy - як вказати адресу прив’язки


16

Використовуючи Putty, я створив зворотний проксі, який дозволяє мені підключити порт 8080 сервера server.tldдо порту 80 машини, який ініціював з'єднання SSH.

Сервер дозволяє мені підключитися localhost:8080і повертає результат, initiator:80коли я підключаюся на сервері.

Це питання говорить про те, щоб увімкнути GatewayPorts і прив’язати до всіх адрес.

Використовуючи Putty, як я можу виставити порт 8080 на сервері, щоб, коли запит надходив через зовнішній інтерфейс (наприклад, веб-запит), порт пересилався до initiator:80?

введіть тут опис зображення


Чи можете ви детально розказати, що саме ви вводите в діалогове вікно PuTTY для створення тунелю?
EightBitTony

Додано скріншот - порти відрізняються від прикладу тексту, однак це не дозволяє запиту зовнішнього інтерфейсу проходити через тунель (наприклад, 1.2.3.4:8080). Внутрішні запити маршрутизовані (localhost: 8080).
Дарбіо

Що означає netstat -an | grep 8080 шоу? А коли ти кажеш, що не дозволяє, що ти маєш на увазі? Чи є у вас брандмауер, що блокує з'єднання з портом 8080?
EightBitTony

Відповіді:


17

Під час налаштування тунелю PuTTY є два прапорці,

  • Місцеві порти приймають з'єднання від інших хостів
  • Віддалені порти роблять те саме (SSH-2)

другий з них робить те, що потрібно.

Я просто перевірив це,

Діалогове вікно тунелів PuTTY,

  • Позначте віддалені порти ...
  • Покладіть 8080 у вихідний порт
  • Покладіть 127.0.0.1:80 у порт призначення
  • Виберіть перемикач "Віддалений"
  • Натисніть Додати
  • Підключення

Добре працює, ось отриманий netstat,

# netstat -an | grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp6       0      0 :::8080                 :::*                    LISTEN

Ви також можете використовувати plink.exe, який постачається разом із PuTTY, наприклад,

plink -R *:8080:localhost:80 user@remote.host.example

що добре працює.

# netstat -an | grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
tcp6       0      0 :::8080                 :::*                    LISTEN

Якщо ви все ще отримуєте 127.0.0.1:8080 на хості, то GatewayPorts у вашому sshd-конфігурації все ще встановлено "ні".

Крім того, не забудьте оновити брандмауер на цільовому сервері, щоб дозволити зовнішнє з'єднання до порту 8080.


Ні - це, здається, не дає мені такої ж поведінки, як і ssh -R *:8080:localhost:80слід?
Дарбіо

GatewayPorts встановлено так. Він працює з ssh -R \*:8080:localhost:80командою, просто не вдалося розібратися в PuTTy
Дарбіо

@Darbio Ви коли-небудь розбиралися в шпаклівці?
барлоп

Я багато використовую переадресацію портів, як правило, на local2remote способом (vnc, проксі тощо), і на цей раз не працював порт remote2local, незалежно від того, яку опцію я перевірив, порт не видається відкритим на віддаленому. Використання plinkбезпосередньо працювало без проблем, використовуючи ті самі команди, що й звичайні ssh. Я не міг зрозуміти, що зробило шпаклівку, щоб вона не працювала ...
m3nda
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.