Тунелі SSH: Налаштування та практичні приклади використання
Безпечний SSH-тунель на VPS AlexHost: вичерпний посібник з переадресації портів і безпечного доступу
У сучасному взаємопов’язаному цифровому світі безпечний віддалений доступ має важливе значення для розробників, системних адміністраторів та ІТ-фахівців, які керують серверами або додатками. Secure Shell (SSH) є основним протоколом для зашифрованого зв’язку, але його можливості тунелювання виводять його на новий рівень. Тунелювання SSH дозволяє безпечно перенаправляти трафік між мережами, обходити брандмауери і отримувати доступ до служб з обмеженим доступом – і все це зі збереженням шифрування і конфіденційності. Незалежно від того, чи отримуєте ви доступ до заблокованої бази даних, чи тестуєте локальний додаток, чи безпечно переглядаєте веб-сторінки через публічну мережу Wi-Fi, SSH-тунелі є універсальним інструментом для реальних сценаріїв.
Що таке SSH-тунель?
SSH-тунель – це метод передачі довільних даних через зашифроване SSH-з’єднання між двома системами. По суті, він дозволяє безпечно перенаправляти мережевий трафік з однієї машини на іншу, створюючи тунель, через який проходять дані. Тунелі SSH можна використовувати трьома основними способами
- Локальне перенаправлення портів
- Віддалене перенаправлення портів
- Динамічне перенаправлення портів
Кожен з цих способів має свої специфічні випадки використання, і ми детально розглянемо кожен з них нижче
1. Локальна переадресація портів
Локальне перенаправлення портів є найбільш часто використовуваною формою тунелювання SSH. Вона дозволяє перенаправляти трафік з локального порту на вашому комп’ютері на віддалений сервіс через SSH-з’єднання
Як працює переадресація локального порту
Коли ви створюєте локальний SSH-тунель, трафік, відправлений на певний порт на вашому комп’ютері, перенаправляється на SSH-сервер, який потім відправляє його до потрібного місця призначення (наприклад, до бази даних або веб-сервера)
Приклад використання: Доступ до віддаленої бази даних
Уявіть, що вам потрібно отримати доступ до бази даних на віддаленому сервері, але порт бази даних заблоковано брандмауером. Замість того, щоб відкривати порт публічно, ви можете використати локальне перенаправлення портів для безпечного доступу до бази даних
Команда для локального перенаправлення портів
ssh -L 5432:localhost:5432 user@remote-serverУ цьому прикладі
- -L 5432:localhost:5432: Вказує локальне перенаправлення портів. Перші 5432 – це порт на вашій локальній машині, localhost:5432 відноситься до віддаленої бази даних.
- user@remote-server: Підключається до віддаленого SSH-сервера.
Тепер ви можете отримати доступ до віддаленої бази даних з вашої локальної машини, підключившись до localhost:5432
2. Віддалене перенаправлення портів
Віддалене перенаправлення портів дозволяє перенаправляти трафік з віддаленого сервера на локальну машину. Це корисно, коли ви хочете надати доступ до служби, що працює на вашому локальному комп’ютері, віддаленому серверу або його користувачам
Як працює віддалене перенаправлення портів
За допомогою віддаленого перенаправлення портів будь-який трафік, який досягає вказаного порту на віддаленому комп’ютері, буде перенаправлено на порт на вашому локальному комп’ютері. Цей параметр часто використовується, коли вам потрібно надати віддаленому серверу службу, яка доступна лише у вашій локальній мережі
Приклад використання: Надання доступу до локальної веб-програми на віддаленому сервері
Уявіть, що ви розробляєте веб-програму локально на своєму комп’ютері і хочете показати її колезі на віддаленому сервері. Замість розгортання програми ви можете скористатися віддаленим перенаправленням портів, щоб дозволити доступ до вашої локальної програми
Команда для віддаленого перенаправлення портів
ssh -R 8080:localhost:3000 user@remote-serverУ цьому прикладі
- -R 8080:localhost:3000: Вказує віддалене перенаправлення портів. Порт 8080 на віддаленій машині буде переадресовано на localhost:3000 на вашій локальній машині, де запущено веб-додаток.
- user@remote-server: Підключається до віддаленого SSH-сервера.
Тепер будь-хто на віддаленому сервері може отримати доступ до вашого веб-додатку через http://remote-server:8080
3. Динамічне перенаправлення портів
Динамічне перенаправлення портів перетворює ваш SSH-клієнт на SOCKS-проксі-сервер, дозволяючи вам направляти трафік з локальної машини через SSH-тунель до будь-якого пункту призначення. Це особливо корисно, коли ви хочете тунелювати весь трафік (наприклад, веб-перегляд) через безпечне з’єднання
Як працює динамічна переадресація портів
При динамічному перенаправленні портів SSH-клієнт прослуховує локальний порт і перенаправляє весь вихідний трафік через SSH-сервер. Таке налаштування дозволяє використовувати SSH-сервер як проксі-сервер для вашого інтернет-з’єднання, обходячи брандмауери і забезпечуючи безпеку трафіку
Приклад використання: обхід мережевих обмежень
Уявіть, що ви перебуваєте в публічній мережі Wi-Fi, а певні веб-сайти або сервіси заблоковані. Ви можете використовувати динамічне перенаправлення портів, щоб обійти ці обмеження і отримати безпечний доступ до інтернету через ваш SSH-сервер
Команда для динамічного перенаправлення портів
ssh -D 8080 user@remote-serverУ цьому прикладі
- -D 8080: Вказує динамічну переадресацію портів. Ваша локальна машина буде діяти як SOCKS проксі на порту 8080.
- user@remote-server: Підключається до віддаленого SSH-сервера.
Після активації тунелю ви можете налаштувати ваш браузер або будь-яку програму на використання localhost:8080 в якості SOCKS-проксі, що дозволить вам безпечно направляти весь трафік через віддалений сервер
Налаштування SSH-тунелів за допомогою конфігураційного файлу
Якщо ви часто використовуєте SSH-тунелі, ви можете спростити цей процес, створивши файл конфігурації SSH. Конфігураційний файл дозволяє вам визначити ярлики для ваших SSH-з’єднань і налаштування переадресації портів, що полегшує налаштування тунелів без необхідності кожного разу вводити довгі команди
Приклад файлу конфігурації SSH
Додайте наступну конфігурацію до ~/.ssh/config
Тепер ви можете налаштувати локальне перенаправлення портів на віддалену базу даних за допомогою простої команди
ssh remote-dbПрактичні приклади використання SSH-тунелювання
1. Безпечний веб-трафік через SOCKS-проксі
Якщо ви працюєте в обмеженому середовищі і вам потрібно отримати доступ до заблокованих сайтів, ви можете налаштувати динамічне перенаправлення портів, щоб спрямувати весь ваш трафік через захищений SSH-сервер
ssh -D 9090 user@ssh-serverПотім налаштуйте ваш браузер на використання localhost:9090 як SOCKS-проксі
2. Доступ до віддаленої внутрішньої служби
Припустимо, вам потрібно отримати доступ до внутрішньої служби, яка доступна тільки у віддаленій приватній мережі. Ви можете використовувати локальне перенаправлення портів для безпечного підключення до цієї служби з вашого локального комп’ютера
ssh -L 8080:internal-service:80 user@remote-serverЦе дозволить вам отримати доступ до внутрішнього сервісу за адресою http://localhost:8080
3. Надання доступу до локального сервера розробки
Якщо ви хочете поділитися локальним сервером розробки з колегами на віддаленому сервері, скористайтеся віддаленим перенаправленням портів
ssh -R 4000:localhost:3000 user@remote-serverТепер колеги на віддаленому сервері можуть отримати доступ до вашої локальної програми за адресою http://remote-server:4000
Висновок: Освоюємо SSH-тунелювання для безпечного доступу на VPS AlexHost
Тунелювання по SSH забезпечує безпечне перенаправлення трафіку для віддаленого доступу або перегляду веб-сторінок. На VPS від AlexHost використовуйте NVMe для тунелів з низькою затримкою, root-доступ для конфігурацій і захист від DDoS для безпеки. Почніть тунелювання вже сьогодні!


