Налаштування локального SSH-перенаправлення портів з використанням бібліотеки sshtunnel у Python

Налаштування локального SSH-перенаправлення портів з використанням бібліотеки sshtunnel у Python

4 Березня 2024 в 14:25 37

SSH (Secure Shell) є потужним протоколом забезпечення віддаленого доступу, який використовується для безпечної комунікації між вузлами в мережі. Одним з його корисних функціональних можливостей є локальне перенаправлення портів, яке дозволяє перенаправляти трафік між локальним і віддаленим хостами через безпечний тунель SSH. У цій статті ми розглянемо налаштування локального перенаправлення портів за допомогою бібліотеки sshtunnel у Python, яка надає зручний інтерфейс для взаємодії з SSH-тунелями у програмах на Python.

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

У відкритій команді SSH для налаштування локального перенаправлення портів ми використовуємо параметр -L. Наприклад:

Де <keyfile> – це шлях до файлу з приватним ключем, <localPort> – це локальний порт, <remoteHost> і <remotePort> – це віддалений хост і порт відповідно, <user> – це ім’я користувача на віддаленому сервері, а <remoteServerIP> – IP-адреса віддаленого сервера.

Тепер давайте перейдемо до налаштування локального перенаправлення портів за допомогою бібліотеки sshtunnel у Python. Перш за все, ми повинні встановити цю бібліотеку за допомогою pip:

Після встановлення ми можемо використати бібліотеку для створення SSH-тунелю. Нижче подано приклад коду, який налаштовує локальне перенаправлення портів:

У цьому коді ми використовуємо бібліотеку sshtunnel для створення SSH-тунелю. Значення змінних SSH_HOST, SSH_PORT, SSH_USER, SSH_KEY, LOCAL_PORT, REMOTE_HOST і REMOTE_PORT повинні бути замінені відповідно до вашого SSH-сервера і налаштувань перенаправлення портів.

Необхідно вказати шлях до файлу з приватним ключем RSA у змінній SSH_KEY. Бібліотека sshtunnel автоматично розпізнає цей тип ключа.

Після запуску цього коду у вас буде створений локальний SSH-тунель, який перенаправлятиме трафік з вказаного локального порту на вказаний віддалений хост і порт.