---

Синтаксис

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]