---
Синтаксис
ssh -D [локальный_порт] user@ssh_server
Пример:
ssh -D 1080 user@example.com
После подключения:
- Локальный порт
1080становится SOCKS5-прокси (по умолчанию). - Любое приложение, настроенное на использование SOCKS-прокси
localhost:1080, будет отправлять запросы через SSH-туннель.
---
Механика работы (пошагово)
1. Установка SSH-соединения
- Клиент подключается к
ssh_serverпо SSH (обычно порт 22). - Аутентификация (пароль, ключ и т.д.).
2. Создание локального порта
- Опция
-D 1080говорит SSH-клиенту:
> "Слушай на localhost:1080 и обрабатывай входящие SOCKS-запросы."
3. Приложение → SOCKS-клиент → SSH-клиент
- Приложение (браузер, curl и т.д.) настроено на SOCKS-прокси
127.0.0.1:1080. - Оно отправляет запрос:
CONNECT google.com:80 (или example.org:443).
4. SSH-клиент обрабатывает запрос
- SSH-клиент не знает, как подключиться к
google.comнапрямую. - Он пересылает этот запрос по зашифрованному SSH-каналу на SSH-сервер.
5. SSH-сервер устанавливает соединение
- SSH-сервер (на
example.com) получает команду от клиента:
> "Подключись к google.com:80 от моего имени."
- Сервер устанавливает TCP-соединение с
google.comсвоим IP-адресом.
6. Двунаправленный туннель
- Установлено:
Приложение ↔ localhost:1080 (SOCKS) ↔ SSH-клиент ↔ SSH-туннель ↔ SSH-сервер ↔ google.com
- Все данные шифруются на участке
SSH-клиент ↔ SSH-сервер.
7. Динамичность
- В отличие от
-L(локальный форвардинг, фиксированный хост:порт),
-D позволяет подключаться к любым хостам, указанным в SOCKS-запросе.
- SSH-сервер сам разрешает DNS и устанавливает соединения.
---
Схема
[Ваш браузер]
↓ (SOCKS5)
[localhost:1080] ← SSH-клиент
↓ (SSH-туннель, зашифровано)
[SSH-сервер @ example.com]
↓ (прямое TCP-соединение)
[google.com, youtube.com, любой хост]
---
Особенности
| Особенность | Описание |
|------------|---------|
| SOCKS5 | Поддерживает TCP и UDP (если сервер разрешает), аутентификацию. |
| SOCKS4 | Можно включить через -D 4:1080, но редко нужно. |
| DNS | По умолчанию разрешается на SSH-сервере (безопасно). Можно форсировать локально: ssh -D 1080 -o ProxyCommand... + настройки. |
| Только TCP | UDP работает только для DNS (в SOCKS5), если сервер поддерживает. |
| Множество соединений | Один -D порт может обслуживать тысячи одновременных подключений. |
---
Примеры использования
1. Обход блокировок (через домашний сервер)
ssh -D 1080 user@home-server.ru
→ Настраиваете браузер на SOCKS 127.0.0.1:1080 → весь трафик идёт через домашний IP.
2. Тестирование с curl
curl --socks5 localhost:1080 http://ifconfig.me
→ Покажет IP вашего SSH-сервера.
3. Только один сайт (гибрид с -L)
ssh -D 1080 -L 8080:internal-app:80 user@vps
→ 1080 — динамический прокси, 8080 — прямой форвардинг.
---
Безопасность
- Трафик шифруется только между вами и SSH-сервером.
- От SSH-сервера до целевого сайта — в открытом виде (если не HTTPS).
- SSH-сервер видит все ваши запросы (хосты, порты).
- Используйте только доверенные серверы.
---
Полезные опции с -D
ssh -D 1080 -f -N user@server # фоновый режим, без команды
ssh -D 1080 -C user@server # сжатие данных
ssh -D 1080 -o "ProxyJump bastion" user@internal # через джамп-хост
---
Итог
> ssh -D [порт] = SOCKS5-прокси на локальном порту,
> который перенаправляет любые TCP-соединения через SSH-сервер,
> динамически разрешая хосты на стороне сервера.
Это мощный инструмент для:
- Обхода блокировок
- Доступа к внутренним ресурсам
- Анонимизации (частичной)
- Тестирования сетей
---
[file-name 000285_2025-11-16_10-04-42.txt]