Что такое SSH-туннель
SSH-туннель перенаправляет сетевой трафик через зашифрованное SSH-соединение между вашей машиной и удалённым сервером. Никакого дополнительного ПО не требуется — всё встроено в протокол. SSH-туннели появились задолго до ngrok и Cloudflare Tunnel, и разработчики до сих пор активно ими пользуются: проброс портов, доступ к удалённым базам, обход файрволов. Если вы пока не знакомы с самой концепцией, начните со статьи «Что такое туннелирование».
SSH поддерживает три типа туннелей:
- Local forwarding (
ssh -L) — пробрасывает порт с удалённого сервера на вашу локальную машину. Полезно, когда вам нужен доступ к сервису, работающему на удалённом сервере (например, к базе данных). - Remote forwarding (
ssh -R) — пробрасывает порт с вашей локальной машины на удалённый сервер. Это аналог reverse tunnel: внешний мир обращается к серверу, а трафик перенаправляется к вам. - Dynamic forwarding (
ssh -D) — создаёт SOCKS-прокси через SSH-соединение. Используется для маршрутизации всего трафика через удалённый сервер.
Команды SSH-туннелей с примерами
Прежде чем сравнивать SSH с альтернативами, давайте разберём конкретные команды. Каждая решает свою задачу, и после знакомства с синтаксисом разница в подходах станет очевидной.
Local forwarding (ssh -L)
Перенаправляет порт удалённого сервера на вашу машину. Например, доступ к PostgreSQL на удалённом сервере:
# Синтаксис: ssh -L [локальный_порт]:[адрес_назначения]:[порт_назначения] user@server
ssh -L 5432:localhost:5432 user@server
# Теперь PostgreSQL на сервере доступен как localhost:5432
psql -h localhost -p 5432 -U myuser mydb
Remote forwarding (ssh -R)
Пробрасывает ваш локальный сервер наружу через удалённый сервер. Это ближайший аналог того, что делают ngrok и fxTunnel:
# Синтаксис: ssh -R [удалённый_порт]:[адрес_назначения]:[порт_назначения] user@server
ssh -R 80:localhost:3000 user@server
# Теперь http://server:80 ведёт на ваш localhost:3000
Dynamic forwarding (ssh -D)
Создаёт SOCKS-прокси. Весь трафик, направленный через прокси, проходит через SSH-сервер:
# Синтаксис: ssh -D [порт] user@server
ssh -D 1080 user@server
# Настройте браузер или приложение на SOCKS5-прокси localhost:1080
curl --socks5 localhost:1080 https://example.com
Полезные флаги
# Фоновый режим без интерактивной сессии
ssh -f -N -L 5432:localhost:5432 user@server
# -f — уйти в фон после аутентификации
# -N — не выполнять удалённую команду (только туннель)
# -T — не выделять TTY (опционально, для чистоты)
Ограничения SSH-туннелей
SSH-туннели надёжны, но у них есть ощутимые ограничения, которые мешают в повседневной разработке. Тестируете вебхуки, показываете демо или работаете в команде? Эти стены вы почувствуете быстро. Подробнее о протоколах TCP и UDP в контексте туннелирования.
Нужен собственный сервер
Для SSH-туннеля обязателен удалённый сервер с публичным IP-адресом и SSH-доступом. Это значит, что вам нужно арендовать VPS, настроить SSH-ключи, обеспечить безопасность сервера и поддерживать его в рабочем состоянии. Для многих разработчиков — особенно фрилансеров и начинающих — это избыточная инфраструктура ради простого проброса портов.
Нет автоматического HTTPS
SSH шифрует соединение между клиентом и сервером, но не выдаёт TLS-сертификат для публичного URL. Если вам нужен HTTPS (а он нужен для вебхуков, OAuth, мобильных API), придётся вручную настраивать nginx или Caddy с Let’s Encrypt на вашем сервере.
Нет инспектора трафика
SSH-туннель — это «чёрный ящик». Вы не видите, какие запросы проходят через туннель, не можете их повторить (replay) и не можете отлаживать проблемы без дополнительных инструментов вроде tcpdump или Wireshark.
Ручная настройка
Каждый раз при подключении вы набираете длинную команду с портами и адресами. Нет конфигурационного файла «из коробки», нет автопереподключения при обрыве связи, нет удобного вывода состояния туннеля.
Нет поддержки UDP
SSH работает поверх TCP и не поддерживает проброс UDP-трафика. Если вам нужен UDP (игровые серверы, VoIP, DNS, IoT-устройства), SSH-туннель не подойдёт.
Обзор современных инструментов туннелирования
fxTunnel, ngrok и Cloudflare Tunnel решают те же задачи, что и SSH, но снимают большинство ограничений: свой сервер не нужен, HTTPS работает из коробки, настройка — секунды. Детальное сравнение этих трёх — в статье ngrok vs Cloudflare vs fxTunnel.
fxTunnel
fxTunnel — open-source инструмент на Go. Одна команда, 30 секунд — и у вас публичный HTTPS-URL. Поддерживает HTTP, TCP и UDP. Есть бесплатный тариф; платные планы от $5/мес добавляют кастомные домены, инспектор и replay.
fxtunnel http 8080
# → https://abc123.fxtun.dev → localhost:8080
ngrok
ngrok — самый известный инструмент. Быстрый старт, отличная документация, но проприетарный, без UDP, с жёсткими лимитами на бесплатном тарифе (1 агент, rate limits) и ценой от $8/мес за расширенные возможности.
ngrok http 8080
Cloudflare Tunnel
Cloudflare Tunnel — бесплатен для HTTP, но требует привязки домена к Cloudflare DNS, не поддерживает UDP, а настройка занимает 10+ минут через YAML-конфиги. TCP доступен только в платных тарифах.
cloudflared tunnel run my-tunnel
Сравнительная таблица: SSH vs fxTunnel vs ngrok vs Cloudflare
Вот как четыре варианта выглядят бок о бок. SSH-туннель — единственный, кто не зависит от стороннего сервиса; современные инструменты обменивают эту независимость на удобство. Более широкий обзор — в статье «Лучшие инструменты туннелирования 2026».
| Критерий | SSH-туннель | fxTunnel | ngrok | Cloudflare Tunnel |
|---|---|---|---|---|
| Нужен свой сервер | Да | Нет | Нет | Нет |
| Время настройки | 5–30 минут | 30 секунд | 2 минуты | 10+ минут |
| HTTPS | Вручную (nginx + LE) | Автоматически | Автоматически | Автоматически |
| Инспектор трафика | Нет | Да (от $5/мес) | Да (ограничен) | Нет |
| Replay запросов | Нет | Да (от $5/мес) | От $8/мес | Нет |
| Протоколы | TCP | HTTP, TCP, UDP | HTTP, TCP | HTTP (TCP платно) |
| UDP | Нет | Да | Нет | Нет |
| Open source | SSH — да | Полностью | Нет | Частично |
| Кастомный домен | Свой сервер + DNS | Любой DNS (от $5/мес) | От $8/мес | Только CF DNS |
| Стоимость | VPS от $5/мес | Бесплатно | Бесплатно (с лимитами) | Бесплатно (HTTP) |
| Автопереподключение | Нет (нужен autossh) | Да | Да | Да |
| Зависимость от вендора | Нет | Нет (open source) | Да | Да (CF DNS) |
Когда SSH-туннель — правильный выбор
SSH-туннель не устарел. Есть сценарии, где он остаётся правильным — или единственным — выбором. Главное преимущество: полная независимость от внешних сервисов.
У вас уже есть сервер
Если у вас есть VPS или выделенный сервер с SSH-доступом, SSH-туннель не требует установки дополнительного ПО. Клиент SSH предустановлен на Linux и macOS, а на Windows есть встроенный OpenSSH-клиент.
Простой проброс портов
Для разовых задач вроде «подключиться к удалённой базе данных» или «проверить API на staging-сервере» SSH-туннель подходит идеально: одна команда, без регистрации, без создания аккаунта.
# Доступ к Redis на продакшен-сервере
ssh -L 6379:localhost:6379 deploy@production-server
redis-cli -h localhost -p 6379
Закрытая корпоративная сеть
В компаниях с жёсткими политиками безопасности установка сторонних инструментов может быть запрещена. SSH-клиент есть везде, а исходящий SSH-трафик обычно разрешён даже в строгих корпоративных сетях.
Полная независимость
SSH-туннель не зависит от внешних сервисов. Нет серверов ngrok, нет облака fxTunnel, нет DNS Cloudflare — только ваш сервер и SSH-клиент. Для параноиков безопасности и сценариев без доступа к интернету это решающий аргумент.
Когда стоит перейти на современные инструменты
Если задачи из списка ниже — ваша повседневность, SSH-туннель создаёт больше трения, чем пользы. Подробнее о типичном сценарии — как открыть localhost для интернета.
Тестирование вебхуков
Stripe, GitHub, Telegram требуют публичный HTTPS-URL для отправки событий. SSH-туннель выдаёт только IP:port без HTTPS. С fxTunnel — одна команда, и HTTPS-URL готов:
fxtunnel http 8080
# → https://wh-test.fxtun.dev (HTTPS из коробки)
Демонстрация проекта
Показать заказчику или коллеге текущий прогресс? SSH-туннель потребует от них помнить IP-адрес и порт. fxTunnel выдаёт читаемый URL, который легко отправить в мессенджере.
Работа в команде
Когда нескольким разработчикам нужны туннели одновременно, SSH-подход означает либо общий сервер с кучей перенаправлений, либо отдельный VPS для каждого. fxTunnel работает без собственного сервера — каждый запускает свой туннель независимо.
Нужен HTTPS без ручной настройки
OAuth, мобильные API, Payment API — все требуют HTTPS. Настраивать nginx + Let’s Encrypt на своём сервере ради тестирования — избыточно. fxTunnel и ngrok дают HTTPS автоматически.
Нет своего сервера
Если у вас нет VPS или выделенного сервера, SSH-туннель просто невозможен. Современные инструменты работают через облачный relay и не требуют инфраструктуры.
Нужен UDP
Игровые серверы, VoIP, IoT-устройства с протоколом UDP — SSH не поддерживает проброс UDP. Из всех рассмотренных инструментов UDP поддерживает только fxTunnel. Подробнее — в статье TCP/UDP туннелирование.
Миграция: SSH-туннель на fxTunnel
Переход с SSH на fxTunnel занимает минуту. Ниже — прямое сравнение команд для типичных сценариев.
Открыть веб-сервер наружу
# SSH (нужен свой сервер, нет HTTPS)
ssh -R 80:localhost:3000 user@server
# fxTunnel (не нужен сервер, HTTPS автоматически)
fxtunnel http 3000
Доступ к удалённой базе данных
# SSH — по-прежнему отличный вариант для этого сценария
ssh -L 5432:localhost:5432 user@db-server
# fxTunnel — если нужен доступ извне к локальной БД
fxtunnel tcp 5432
Проброс нескольких портов
# SSH — отдельная команда или флаг для каждого порта
ssh -L 5432:localhost:5432 -L 6379:localhost:6379 user@server
# fxTunnel — отдельные туннели с независимыми URL
fxtunnel http 3000 &
fxtunnel tcp 5432 &
fxtunnel udp 27015 &
Вебхуки с HTTPS
# SSH — нужен сервер + nginx + Let's Encrypt
ssh -R 8080:localhost:3000 user@server
# + настройка nginx reverse proxy
# + certbot --nginx -d webhook.example.com
# fxTunnel — одна команда, HTTPS из коробки
fxtunnel http 3000
# → https://wh-abc.fxtun.dev (готово)
FAQ
Чем SSH-туннель отличается от ngrok?
Для SSH-туннеля нужен свой сервер, ручная настройка, а встроенного HTTPS и инспектора трафика нет. ngrok и fxTunnel обходятся без сервера, выдают публичный HTTPS-URL за секунды и показывают запросы через веб-интерфейс. fxTunnel при этом ещё и open source с поддержкой UDP.
Можно ли заменить SSH-туннель на fxTunnel?
В большинстве случаев — да. Если вы сейчас используете ssh -L или ssh -R, одна команда fxtunnel http 8080 или fxtunnel tcp 5432 делает то же самое. Бонусом — автоматический HTTPS и инспектор трафика без собственного сервера.
Когда SSH-туннель лучше современных инструментов?
Когда у вас уже есть сервер с SSH и нужен быстрый проброс порта без публичного URL. Или когда вы принципиально не хотите зависеть от сторонних сервисов — например, в закрытой корпоративной сети, где установка внешних инструментов запрещена.
Нужен ли свой сервер для SSH-туннеля?
Да — нужна удалённая машина с SSH-доступом и публичным IP. fxTunnel и ngrok маршрутизируют трафик через облачный relay, поэтому собственная инфраструктура не требуется.
Поддерживает ли SSH-туннель HTTPS?
Сам по себе — нет. SSH шифрует канал между вашей машиной и сервером, но TLS-сертификат для публичного URL не выдаёт. Для HTTPS придётся самостоятельно настраивать nginx или Caddy с Let’s Encrypt. Современные инструменты вроде fxTunnel делают это автоматически.