Repolode
pahaz

pahaz/sshtunnel

Библиотека Python и CLI для SSH-туннелей, перенаправляющих локальные порты к сервисам на удалённых или закрытых хостах с помощью paramiko.

Звёзды
1,305
Форки
200
Открытые issues
71
Последний коммит
вчера

Что это?

sshtunnel позволяет настраивать переадресацию портов SSH из кода Python и командной строки. Это пригодится, если сервис — например, веб-приложение или база данных — доступен только через SSH-порт или если закрытый сервер находится за шлюзом, на котором открыт только SSH.

Основная точка входа — SSHTunnelForwarder. Её можно использовать с методами start()/stop() или как менеджер контекста через open_tunnel. После запуска туннель предоставляет порт local_bind_port, к которому подключается приложение. Поддерживается аутентификация по паролю, файлу приватного ключа с необязательной парольной фразой, а также с помощью SSH-агента или ~/.ssh/config. Для многоступенчатых туннелей можно направить один туннель на локальный порт другого.

В проект также входит CLI sshtunnel, которому в качестве аргументов передаются SSH-учётные данные, адреса удалённой и локальной привязки. Библиотека написана только на Python и работает как в Windows, так и в Unix-подобных системах.

Ключевые возможности

  • 01Перенаправление локальных портов к удалённым сервисам, доступным только через SSH.
  • 02Программный запуск и остановка туннелей или управление ими с помощью with.
  • 03Поддержка аутентификации по паролю, приватному ключу и через SSH-агент.
  • 04Объединение нескольких туннелей для доступа к хостам за шлюзом.
  • 05CLI для быстрого перенаправления портов.
  • 06Чтение хостов и настроек из ~/.ssh/config.

Сценарии использования

  • Подключение к базе данных или веб-сервису на сервере, у которого открыт только порт SSH.
  • Доступ к закрытому хосту через bastion или jump server из тестовых скриптов.
  • Перенаправление порта локальной базы для разработки, например в виртуальной машине Vagrant, с помощью скрипта.
  • Автоматизация настройки туннелей в CI или конвейерах обработки данных, которым нужны удалённые ресурсы.

Быстрый старт

  1. 1

    Установите пакет из PyPI

    pip install sshtunnel
  2. 2

    Откройте туннель из Python с помощью SSHTunnelForwarder и прочитайте server.local_bind_port

В подборках

Темы

Частые вопросы

Что такое sshtunnel?
Библиотека Python и CLI для SSH-туннелей, перенаправляющих локальные порты к сервисам на удалённых или закрытых хостах с помощью paramiko. sshtunnel позволяет настраивать переадресацию портов SSH из кода Python и командной строки. Это пригодится, если сервис — например, веб-приложение или база данных — доступен только через SSH-порт или если закрытый сервер находится за шлюзом, на котором открыт только SSH.
sshtunnel можно использовать бесплатно? Какая у него лицензия?
sshtunnel распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
sshtunnel всё ещё поддерживается?
Активно поддерживается. Последний коммит в sshtunnel — 6 нояб. 2026 г..
Для чего можно использовать sshtunnel?
Подключение к базе данных или веб-сервису на сервере, у которого открыт только порт SSH. Доступ к закрытому хосту через bastion или jump server из тестовых скриптов. Перенаправление порта локальной базы для разработки, например в виртуальной машине Vagrant, с помощью скрипта. Автоматизация настройки туннелей в CI или конвейерах обработки данных, которым нужны удалённые ресурсы.
Как установить sshtunnel?
Установите пакет из PyPI: pip install sshtunnel Откройте туннель из Python с помощью SSHTunnelForwarder и прочитайте server.local_bind_port
Где скачать sshtunnel?
Исходный код и инструкции по установке — на GitHub: https://github.com/pahaz/sshtunnel

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Библиотека Python для упрощения SSH-подключений к CLI сетевых устройств разных производителей, выполнения show-команд и внесения изменений в конфигурацию.

4,3 тыс.+5 за неделю1,4 тыс.PythonMITОбновлён 8 дней назад

CLI в стиле netcat и библиотека Go для соединения двух машин через плоскость передачи данных WireGuard в Tailscale — без аккаунта Tailscale и управляющей плоскости.

8,8 тыс.+64 за неделю402GoBSD-3-ClauseАктивно поддерживаетсяОбновлён позавчера