Доступ к интернету в наши дни напоминает игру в «Сапёра»: никогда не знаешь, где рванёт и какой репозиторий отвалится завтра. Утром ты сеньор-помидор, а к обеду не можешь стянуть дистрибутив, потому что чей-то IP попал под горячую руку регулятора.
Если вы давно живёте в терминале, скорее всего всё это знаете - этот текст для тех, кто ещё не использовал SSH как SOCKS5-прокси.
Конечно, можно развернуть VLESS с XTLS-Reality, обернуть это в CDN и присыпать сверху магией, но иногда нужно решение в стиле «тяп-ляп и в продакшен».
Встречайте: SOCKS5 поверх SSH. Дешево, сердито и работает (если ваш провайдер еще не научился вскрывать SSH-пакеты зубами).
Имея VPS за пару долларов, вы можете вернуть себе доступ к документации (и, чего уж греха таить, к котикам в Instagram) буквально одной командой.
Типичный дешевый сервер
Как найти документацию
SSH — это не только чёрная консоль для красноглазых админов. Он умеет делать динамический прокси (<strong>-D</strong>).
Никаких Squid, 3proxy или сложных конфигов, от которых хочется выйти в окно. Только стандартный sshd.
Для пользователей Windows 10/11, Linux и macOS:
Забудьте про сторонний софт. В вашей консоли уже, скорее всего, есть всё необходимое.
Где:
Настройка доступа через прокси
Варианты по платформам:
autossh будет следить за соединением и перезапускать туннель, если оно оборвётся.
Давать ему свой root-пароль — плохая примета (к потере сервера). Создадим для него отдельную «комнату».
Теперь вы и ваш коллега ходите через один сервер, но если он решит скачать весь торрент-трекер и положить вам канал, вы будете знать, кого бить.
На клиенте:
Теперь вход выглядит так:
Никаких паролей. Чистая криптография. И вы чувствуете себя хакером из фильмов 90-х.
А теперь провайдер не видит адресную строку
Настраивается за минуту, не требует установки лишнего софта и спасает нервные клетки. А свобода... свобода нынче начинается с собственных знаний.
Ряд проблем
Проблема 22 порта:
Сейчас многие провайдеры (особенно мобильные) режут или замедляют именно SSH протокол. Можно сменить порт SSH сервера на 443 (если там не веб-сервер) или любой рандомный (например, 2222), чтобы снизить вероятность блокировки по стандартному порту.
Клиентская часть:
Не все любят консоль. Можно рекомендовать для использования Windows: Bitvise SSH Client (умеет socks из коробки и автореконнект). Android/iOS: Termius или ConnectBot (чтобы раздать интернет с телефона через SSH туннель).
Настройка ufw: имеет смысл запретить доступ на сервер со всего интернета и оставить только известный диапазон адресов своего провайдера на случай если Fail2Ban не вывезет.
P.S. Статья написана в основном для неофитов и для побуждения поднять свой уровень образования в части сетевого администрирования и использования сетевых протоколов. Тема статьи бесконечная, и дан абсолютный минимум.
Источник
Если вы давно живёте в терминале, скорее всего всё это знаете - этот текст для тех, кто ещё не использовал SSH как SOCKS5-прокси.
Конечно, можно развернуть VLESS с XTLS-Reality, обернуть это в CDN и присыпать сверху магией, но иногда нужно решение в стиле «тяп-ляп и в продакшен».
Встречайте: SOCKS5 поверх SSH. Дешево, сердито и работает (если ваш провайдер еще не научился вскрывать SSH-пакеты зубами).
Имея VPS за пару долларов, вы можете вернуть себе доступ к документации (и, чего уж греха таить, к котикам в Instagram) буквально одной командой.
Типичный дешевый сервер
Дисклеймер: учитывайте законодательство вашей страны и условия договора с провайдером при использовании любых прокси и туннелей.
Как это работает?auto
Как найти документацию
SSH — это не только чёрная консоль для красноглазых админов. Он умеет делать динамический прокси (<strong>-D</strong>).
Никаких Squid, 3proxy или сложных конфигов, от которых хочется выйти в окно. Только стандартный sshd.
Для пользователей Windows 10/11, Linux и macOS:
Забудьте про сторонний софт. В вашей консоли уже, скорее всего, есть всё необходимое.
Код:
ssh -D 1081 -N -C user@1.1.1.1
Где:
- -D 1081: поднимает локальный SOCKS5 на порту 1081.
- -N: говорит SSH «не открывай мне шелл, я тут только ради туннеля».
- -C: включает сжатие (полезно, если вы читаете текст, бесполезно, если смотрите 4K-видео).
Код:
plink.exe -ssh user1@1.1.1.1 -pw MySuperSecretPass -D 1081 -N -batch
Настраиваем в браузере прокси 127.0.0.1:1081 и наслаждаемся. А здесь должна быть отбивка, зачем нам portable Firefox - а затем, что можно прописать прокси сервер независимо от системы, и каждую сессию стартовать с новой историей и куки, если озаботиться развертыванием из архива перед новой сессией или когда захотим начать с чистого листа.Дисклеймер: Передавать пароль в аргументах командной строки (-pw) — это моветон. Ваш системный администратор увидит это в логах и будет грустно вздыхать. А если это увидит «товарищ майор» в дампе процессов... В общем, используйте ключи, но об этом ниже.
Настройка доступа через прокси
Автоподключение при старте системы (чтобы не тыкать команду каждый раз)
Если туннель нужен постоянно, надоело руками запускать ssh -D после каждого перезапуска.Варианты по платформам:
- Windows
- Сгенерировать ключ и сохранить его в Pageant (PuTTY-агент).
- Создать задачу в Планировщике заданий: запуск plink.exe с параметрами -D -N, триггер — при входе пользователя или при старте системы.
- macOS
- Описать ssh -D в LaunchAgent (plist-файл в ~/Library/LaunchAgents/) и включить автозапуск через launchctl.
- Linux
- Создать systemd --user сервис, который поднимает туннель для конкретного пользователя при входе в сессию.
Код:
autossh -M 0 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" -D 1081 -N user@1.1.1.1
"Брат, дай интернет"
Иногда коллега с грустными глазами просит доступ, чтобы посмотреть мануал для Солидворкса на Ютубе.Давать ему свой root-пароль — плохая примета (к потере сервера). Создадим для него отдельную «комнату».
Код:
# Создаем пользователя без доступа к консоли (только туннель — высший пилотаж паранойи)
sudo useradd -m -s /usr/sbin/nologin friend_user
sudo passwd friend_user
Почему отдельные юзеры — это хорошо?
- Изоляция.
Надоел коллега? sudo userdel friend_user. Быстро, жёстко, эффективно. - Логи.
В /var/log/auth.log видно, кто и когда заходил (на Debian/Ubuntu). Если увидите вход в 3 часа ночи с IP-адреса в Антарктиде — время менять пароли.
Безопасность: не будьте наивными
SSH-порт, торчащий в интернет на 22-м порту, привлекает ботов сильнее, чем бесплатное пиво — студентов.1. Fail2Ban — мастхэв!!!
Это вышибала для вашего клуба. Три раза ошибся паролем — иди гуляй на 10 минут.
Код:
sudo apt install fail2ban -y
# Он работает из коробки, но лучше проверить конфиг, чтобы не забанить самого себя.
2. Ключи — наше всё
Пароли воруют, подбирают, записывают на стикерах. SSH-ключи — это как биометрия, только для серверов.На клиенте:
Код:
ssh-keygen -t ed25519
ssh-copy-id user@1.1.1.1
Теперь вход выглядит так:
Код:
ssh -D 1081 -N user@1.1.1.1
Ложка дёгтя (Важно!)
SSH-туннель — это не VPN и не VLESS.- DPI видит протокол SSH.
Если ваш провайдер решит резать SSH-трафик, этот метод перестанет работать. - UDP не поддерживается.
Звонки в Telegram или Zoom через такой SOCKS5 могут не работать (SSH умеет только TCP, хотя есть костыли, но это тема другой статьи). - DNS.
Убедитесь, что ваш браузер проксирует и DNS-запросы тоже (галочка "Proxy DNS when using SOCKS v5" в Firefox), иначе провайдер увидит, на какие сайты вы ходите, хоть и не увидит контент.
А теперь провайдер не видит адресную строку
Заключение
SSH-прокси — это швейцарский нож. Он не заменит полноценный инструмент для обхода блокировок в условиях жесткой цензуры, но как средство «быстро попасть на любимый сервер» часто работает без навороченных комбайнов.Настраивается за минуту, не требует установки лишнего софта и спасает нервные клетки. А свобода... свобода нынче начинается с собственных знаний.
Ряд проблем
Проблема 22 порта:
Сейчас многие провайдеры (особенно мобильные) режут или замедляют именно SSH протокол. Можно сменить порт SSH сервера на 443 (если там не веб-сервер) или любой рандомный (например, 2222), чтобы снизить вероятность блокировки по стандартному порту.
Клиентская часть:
Не все любят консоль. Можно рекомендовать для использования Windows: Bitvise SSH Client (умеет socks из коробки и автореконнект). Android/iOS: Termius или ConnectBot (чтобы раздать интернет с телефона через SSH туннель).
Настройка ufw: имеет смысл запретить доступ на сервер со всего интернета и оставить только известный диапазон адресов своего провайдера на случай если Fail2Ban не вывезет.
P.S. Статья написана в основном для неофитов и для побуждения поднять свой уровень образования в части сетевого администрирования и использования сетевых протоколов. Тема статьи бесконечная, и дан абсолютный минимум.
Источник
Последнее редактирование: