Skip to content

Latest commit

 

History

History
114 lines (70 loc) · 7.53 KB

File metadata and controls

114 lines (70 loc) · 7.53 KB

Прокси через SSH-туннель

Источник: Setting Up a SOCKS Proxy Over SSH Tunnels

Простой пример

Начнём с простого примера. Предположим, у нас есть доступ к SSH-серверу sshd_server, который мы хотим использовать как прокси-сервер SOCKS5. Для этого достаточно выполнить команду:

ssh -D 8080 username@sshd_server

После этого укажите в настройках прокси браузера, например Firefox, SOCKS5-прокси 127.0.0.1:8080. Готово!

Проверить, какой IP-адрес видят сайты при работе через прокси, можно на странице «Кто я?».

Настройка прокси через SSH

Через SSH можно настроить и более сложную схему. Например, у нас есть SSH-сервер s2 и ещё один узел s1, который будет выступать в роли прокси-сервера. Узел s1 принимает подключения клиентов, а s2 подключается к серверу назначения s3. Общая схема выглядит так:

c0:p0 <--> s1:p1 <==> s2:p2 <--> s3

Как и в простом примере выше, чаще всего c0 и s1 — один и тот же компьютер.

Использовать SSH в качестве прокси для просмотра веб-страниц удобно в нескольких случаях:

  • локальный доступ ограничен, например строгим межсетевым экраном в стране, компании или учебном заведении;
  • вы находитесь в небезопасном сетевом окружении и хотите войти в свою учётную запись.

Рассмотрим настройку прокси через SSH-туннель. Для этого используется динамическая переадресация портов SSH, которая включается параметром -D. SSH создаёт на локальной стороне сокет, прослушивающий заданный порт; при необходимости сокет можно привязать к определённому IP-адресу. Каждое подключение к этому порту передаётся по SSH-каналу, после чего прикладной протокол определяет, к какому адресу следует подключиться с удалённого узла.

1. Прокси, доступный только через localhost

Такой прокси-сервер можно использовать только на локальном компьютере: другим пользователям он недоступен. В приведённой выше схеме c0 и s1 являются одним компьютером.

Команда:

ssh -D p1 username@sshd_server

Здесь p1 — порт на локальном компьютере. В качестве p1 можно выбрать любой порт с номером больше 1024. После создания прокси-туннеля укажите в настройках браузера SOCKS5-прокси 127.0.0.1:p1. На этом настройка завершена.

2. Прокси, привязанный к определённому IP-адресу

Такой прокси-сервер может обслуживать и других пользователей. Они, включая вас, смогут подключаться к нему по адресу s1_ip и порту p1.

Команда:

ssh -D s1_ip:p1 username@sshd_server

Команда создаёт на s1 прокси-сервер SOCKS5 с адресом s1_ip:p1.

Полезные параметры SSH

Следующие параметры SSH делают переадресацию портов удобнее:

  • -C — включает gzip-сжатие всех данных;
  • -T — отключает выделение псевдотерминала;
  • -N — не выполняет команду на удалённом узле, что удобно при использовании SSH только для переадресации портов;
  • -f — переводит SSH в фоновый режим непосредственно перед выполнением команды;
  • -n — перенаправляет стандартный ввод из /dev/null, то есть запрещает чтение из стандартного ввода;
  • -q — включает тихий режим и подавляет большинство предупреждений и диагностических сообщений.

Эти параметры можно использовать вместе с -D в разных сочетаниях. Например:

ssh -CnfND 8080 username@sshd_server

Чтобы закрыть такой SSH-туннель, сначала найдите идентификатор процесса (PID):

ps aux | grep ssh

Затем завершите найденный процесс.

Можно также оставить SSH запущенным в текущей оболочке:

ssh -CTND 8080 username@sshd_server

Чтобы принимать подключения на всех адресах узла, выполните:

ssh -D "*:8080" username@sshd_server

Переадресация порта прокси-сервера Squid

Эта статья посвящена главным образом созданию прокси с помощью SSH. Однако SSH-туннель можно использовать и для подключения клиента к прокси-серверу другого типа, например Squid. Здесь приведён только простой пример; подробнее о переадресации портов через SSH рассказано в статье «Переадресация портов через SSH-туннель».

Предположим, адрес и порт прокси-сервера — proxy:port. Перенаправить к нему локальный порт 8080 можно так:

ssh -L 8080:proxy:port username@sshd_server

Глобальный прокси GNOME с NetworkManager в Linux ∞

Если вы используете Linux с NetworkManager, можно настроить глобальный прокси GNOME для работы через SOCKS-прокси, созданный с помощью SSH.

Настройка прокси в GNOME


ssh proxy