Что такое 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-туннельfxTunnelngrokCloudflare Tunnel
Нужен свой серверДаНетНетНет
Время настройки5–30 минут30 секунд2 минуты10+ минут
HTTPSВручную (nginx + LE)АвтоматическиАвтоматическиАвтоматически
Инспектор трафикаНетДа (от $5/мес)Да (ограничен)Нет
Replay запросовНетДа (от $5/мес)От $8/месНет
ПротоколыTCPHTTP, TCP, UDPHTTP, TCPHTTP (TCP платно)
UDPНетДаНетНет
Open sourceSSH — даПолностьюНетЧастично
Кастомный доменСвой сервер + 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 делают это автоматически.