sshuttle — это инструмент для организации прозрачного прокси-трафика поверх SSH, который часто называют «бедным человеком’s VPN». Он позволяет направлять сетевой трафик с клиентской машины через SSH-соединение к удалённому хосту, при этом на сервере не требуется установка сложных компонентов — достаточно наличия интерпретатора Python. Инструмент особенно полезен в тех сценариях, когда требуется доступ к удалённым подсетям, но нет возможности развернуть полноценный VPN или настроить полноценные туннели на уровне ядра.
Разработка sshuttle началась как попытка объединить простоту SSH-туннелей и функциональность VPN, обеспечивая маршрутизацию трафика на уровне IP без необходимости прямой настройки серверной стороны. Для работы sshuttle требуется права root (или аналогичные) на клиентской машине, чтобы ввести правила перенаправления (например, через iptables или аналогичные механизмы), но на целевом сервере достаточно обычного доступа по SSH и возможности запускать скрипты Python. Несмотря на ограниченность некоторых платформ и особенности реализации, sshuttle активно используется администраторами и энтузиастами для удалённого доступа и проброса сетей.
- Транспарентный прокси/IP-маршрутизация поверх SSH: автоматически перехватывает пакеты и направляет их через SSH-связь без необходимости индивидуальных портфорвардов.
- Минимальные требования на сервере: не требует установки системных служб на целевой стороне — нужен лишь Python и SSH-доступ.
- Поддержка DNS-туннелирования: перехват DNS-запросов на клиенте и их пересылка на DNS-сервер на стороне туннеля для разрешения имён в удалённой сети.
- Автоматическая маршрутизация подсетей: опции для автоматического определения и маршрутизации удалённых сетей на основании таблицы маршрутов сервера.
- Исключения маршрутов: возможность исключать конкретные подсети или адреса из туннелирования, чтобы оставлять локальный трафик нетронутым.
- Гибкость способов внедрения перехвата: поддержка различных методов (nat, tproxy, nft, pf, ipfw и др.) в зависимости от ОС и конфигурации.
- Многоадресная работа и совмещение туннелей: можно запустить несколько экземпляров sshuttle, направляя трафик к разным удалённым узлам одновременно.
- Запуск как служба/демон: режим демона обеспечивает работу в фоновом режиме и возможность интеграции с системами управления процессами.