Розуміння тунелів SSH


15

У мене є сервер linux (Ubuntu), до якого я маю кореневий доступ лише через ssh (порт 22). На цьому сервері є база даних MySQL, яка прослуховує порт 3306. Чи можна використовувати шпаклівку (на моїй машині) та тунелювання (на машині Linux) для створення тунелю з локального порту на моїй машині (скажімо 4000), на Linux-сервер на порт 22, а потім із сервера на сам порт 3306?

Відповіді:


20

Я намалював кілька ескізів

Машина, на якій набрана команда ssh tunnel (або у вашому випадку: запускається шпаклівка з тунелюванням), називається « вашим хостом» .

ssh тунель, починаючи з місцевих


ssh тунель, починаючи з віддаленого

Вступ

  1. місцеві: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.

    ssh -L sourcePort:forwardToHost:onPort connectToHostозначає: підключіться з ssh до connectToHostта переадресуйте всі спроби підключення до локального sourcePort до порту onPortна машині forwardToHost, що називається , до якої можна дістатися з connectToHostмашини.

  2. віддалений: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.

    ssh -R sourcePort:forwardToHost:onPort connectToHostозначає: підключіться з ssh до connectToHostта переадресуйте всі спроби підключення до віддаленого sourcePort до порту onPortна машині forwardToHost, що називається , до якої можна дістатися з локальної машини.

Ваш приклад

Перше зображення представляє вашу ситуацію. Синє поле, яке називається, your host- це ваша машина Windows, з якої ви запускаєте Putty на свій сервер Ubuntu, викликаний remotehostу моєму зображенні. Підключення до зеленого порту (в вашому випадку номер порту 4000) пересилається в рожевий MySQL порт 3306з localhostвашого комп'ютера сервера Ubuntu (тобто сам сервер Ubuntu).

Щоб налаштувати його за допомогою Putty

Запустіть "Шпаклівку" та введіть свої звичайні налаштування з'єднання (ім'я хосту чи IP-адресу). У дереві ліворуч перейдіть до пункту

З'єднання → SSH → Тунелі

і створити новий локальний тунель з вихідним портом 4000(123 на зображенні) та пунктом призначення localhost:3306(localhost: 456 на зображенні).

Не забудьте натиснути на Додати .

Потім перейдіть до сеансу та натисніть кнопку " Зберегти", щоб зберегти налаштування в наступний раз. Тепер ви можете використовувати збережене з'єднання для входу на свій сервер, і після успішного входу в систему кожного разу, коли ви підключаєтесь до порту 4000 на своєму хості, ви фактично підключитесь до порту 3306 на сервері Ubuntu.

створити передній тунель шпаклівкою


Дуже добре, дякую за ілюстрацію. Я вдячний, що ви додали тунелі "віддаленого" типу, які я не покривав у своїх передвигах.
Гасс

1
Ця відповідь приголомшлива
Маурісіо Паск'є Хуан

2
Дивовижна і дуже
наочна

1
Як це має так мало голосів - прикро.
Райан Фішер

1
Я люблю ці етюди. Картина варта тисячі слів.
квартал

16

Проста відповідь - так, але зауважте, що тунель насправді запущений на вашому комп’ютері. Як це працює, ви створюєте SSH-з'єднання з сервером (який захищено), а потім доручаєте SSH прослуховувати порт на вашій стороні та пересилати будь-які з'єднання, що входять - до певного порту на конкретній хост-адресі сторона сервера. Ціль тунелю не повинен бути тим самим сервером - це може бути будь-яка інша дійсна адреса, яка - у випадку, якщо це не сервер, на якому працює сам SSH-сервер - буде бачити вхідне з'єднання так, ніби воно прийшло з SSH-сервера замість від вашого клієнта.

Щоб налаштувати його, відкрийте діалогове вікно конфігурації Putty, виберіть налаштування з'єднання, яке ви зазвичай використовуєте для доступу до свого сервера та натисніть "load" (а не "open"). Потім у дереві з лівого боку перейдіть до З'єднання-> SSH-> Тунелі та створіть новий "локальний" тунель з вихідним портом 4000 та пунктом призначення "localhost: 3306" (оскільки адреса призначення вирішена на сервері, з точки зору сервера порт MySQL знаходиться на localhost). Потім поверніться до "сесії" та натисніть "Зберегти", щоб зберегти свої налаштування в наступний раз. Тепер ви можете використовувати збережене з'єднання для входу на свій сервер, і після успішного входу в систему, кожен раз, коли ви підключаєтесь до порту 4000 на своєму комп’ютері, ви фактично підключитесь до порту 3306 на сервері.

Якщо ви серйозно займаєтеся тунелями та працюєте з клієнтом MS-Windows, то я пропоную переглянути менеджер тунелів Putty, який використовує Putty, щоб легко налаштувати та запускати тунелі без необхідності мати консоль відкритої шпаклівки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.