Что такое SSH-туннелирование и каковы его основные типы

Ответ

SSH-туннелирование (SSH port forwarding) — это метод создания зашифрованного канала между локальным и удаленным компьютером, через который можно безопасно передавать трафик других протоколов.

Это позволяет защитить незашифрованные протоколы или получить доступ к сервисам во внутренней сети.

Основные типы туннелей:

  1. Локальный туннель (-L): Пробрасывает порт с локальной машины на удаленный сервер. Используется для доступа к удаленному сервису (например, базе данных) так, как будто он запущен локально.

    # Локальный порт 8080 будет перенаправлен на порт 80 удаленного сервера
    ssh -L 8080:localhost:80 user@remote-server
  2. Удалённый туннель (-R): Пробрасывает порт с удаленного сервера на локальную машину. Полезно, когда нужно предоставить доступ к локальному веб-серверу из внешней сети.

    # Удаленный сервер будет слушать порт 9000 и перенаправлять трафик на порт 3000 локальной машины
    ssh -R 9000:localhost:3000 user@remote-server
  3. Динамический туннель (-D): Создает SOCKS-прокси на локальной машине. Весь трафик, направленный через этот прокси, будет выходить в сеть с IP-адреса удаленного сервера.

    # Создать SOCKS-прокси на локальном порту 1080
    ssh -D 1080 user@remote-server

Сферы применения: безопасный доступ к базам данных, обход сетевых ограничений, доступ к внутренним ресурсам компании.

Ответ 18+ 🔞

Смотри, вот тебе про SSH-туннели, но без этой академической сухости, а как есть, на пальцах.

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

Суть в чём? Берёшь любой свой кривой, незащищённый трафик (например, к базе данных, которая общается как голый на улице) и прогоняешь его через этот защищённый SSH-канал. Всё. Теперь снаружи видны только шифрованные SSH-потоки. Красота, ёпта!

А делается это тремя основными способами, и тут главное не запутаться:

  1. Локальный туннель (-L) — «Принеси мне это сюда». Ты сидишь за своим компом и хочешь достучаться до сервиса на удалённой машине (или даже через неё до третьей), но напрямую нельзя. Ты говоришь SSH: «Слушай, друг, открой у меня на компе порт 8080, а всё, что туда прилетит, аккуратно заверни, пронеси через наш секретный туннель до той стороны и отдай на порт 80 там». И он делает!

    ssh -L 8080:localhost:80 user@remote-server

    После этого открываешь браузер на localhost:8080 — и опа, ты уже смотришь веб-страницу с remote-server, как будто она у тебя локально крутится. Магия, блядь! Или базу данных так подключать — вообще песня.

  2. Удалённый туннель (-R) — «Выставь моё это там». Обратная ситуация. У тебя на ноуте крутится локальный веб-сервер на порту 3000, и ты хочешь показать его другу на другом конце света. Но у тебя белый IP? Да хуй там! Ты говоришь SSH: «Вот, возьми доступ к моему порту 3000, пробейся на удалённый сервер gateway.com и открой там для всех порт 9000. Кто придёт на тот порт — веди ко мне».

    ssh -R 9000:localhost:3000 user@gateway.com

    Теперь друг заходит на gateway.com:9000 — и его трафик по туннелю прилетает прямиком к тебе на ноут. Удобно для демок или когда нужно дать доступ к своей локальной разработке. Хитрая жопа, а не технология.

  3. Динамический туннель (-D) — «Сделай из меня прокси-сервер». Это уже полная свобода. Ты создаёшь на своём компе локальный SOCKS-прокси.

    ssh -D 1080 user@server-in-free-country

    Настраиваешь в браузере или системе: «Весь мой трафик гони через localhost:1080». И всё! Теперь весь твой интернет-сёрфинг будет выходить в сеть с IP-адреса того самого server-in-free-country. Весь, Карл! Обход блокировок, безопасность в публичных сетях — одним махом. Правда, скорость иногда страдает, но тут уж, как говорится, или грузиться быстро с риском, или безопасно, но с чаечком.

Где это всё, блядь, применять? Да везде! Доступ к внутренней базе данных компании из дома, проброс портов через десять файрволов, безопасная работа в кафешке, обход идиотских региональных блокировок... В общем, инструмент овердохуищной полезности. Главное — понять логику, а там уже руки сами запомнят эти -L, -R и -D.