shabelski89
@shabelski89
engineer

Local port forwarding with host jumping Python?

Добрый день!
Помогите разобраться как на python выполнить port forwarding через несколько хостов?
Схема: [localhost]-[hostA]-[hostB]..[hostN]-[dest_host]
CLI like:
ssh -t -gL 6000:localhost:6000 hostA ssh -t -gL 6000:localhost:6000 hostB ssh -t -gL 6000:dest_host:6000 hostN


Используя sshtunnel получается перейти на hostA , как открыть следующий туннель из этого туннеля?
Ниже тестовый код, переход на 1 хост, как перейти на следующий ?
from sshtunnel import SSHTunnelForwarder
import requests


with SSHTunnelForwarder(
         ('192.168.1.3', 22),
         ssh_password='password',
         ssh_username='username',
         local_bind_address=('127.0.0.1', 6000),
         remote_bind_address=('dest_host', 6000)  # or localhost если сервис тут же
    ) as server:
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.0; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0'}
    r = requests.get('http://127.0.0.1:6000', headers=headers).content
    print(r)


Не нашел рабочих примеров для sshtunnel и paramiko, в основном требуется туннель на удаленный хост и далее коннект к БД либо на localhost, либо на внешний адрес.
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 2
shabelski89
@shabelski89 Автор вопроса
engineer
Уважаемые знатоки, Сергей Карбивничий Сергей Горностаев Сергей Паньков , неужели пройдём мимо?
Ответ написан
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Пробрасывайте последовательно через все туннели, кроме последнего, не 6000 порт, а 22. Пследний туннель пробросит целевой порт. Все коннекты, начиная со второго, должны быть на localhost, а порты ssh придется биндить на разные локальные порты.

Смотрите, в CLI вы каждый раз на новой уделенной машине стартуете ssh. Технически можно делать это на одной машине, пришивая каждый раз 22 порт следующей удаленной машины на очередной локальный порт.

Сам не пробовал. пока некогда.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 150 000 до 200 000 ₽
OnederX Москва
от 100 000 до 120 000 ₽
Кенарий Санкт-Петербург
от 120 000 до 250 000 ₽
28 сент. 2020, в 22:46
1500 руб./за проект
28 сент. 2020, в 22:42
5000 руб./за проект
28 сент. 2020, в 21:50
600 руб./в час