Подключение по SSH через SOCKS4/SOCKS5/HTTPS-прокси

В условиях, когда до хоста по каким-либо причинам нет прямого доступа по сети и он доступен только через SOCKS4/SOCKS5/HTTPS-прокси, может быть необходимо получить до него доступ по SSH. Например для использования Git over SSH.

Итак, предположим, у нас есть следующая структура сети:

  • git.example.org — сервер, к которому нам нужно получить SSH-доступ
  • 10.1.1.1:1080 — SOCKS5-прокси
  • localhost — хост, у которого уже есть доступ до git.example.org по HTTP(S) через SOCKS5 и нужен доступ по SSH.

Для реализации поставленной задачи понадобится только утилита netcat, которая по-моему входит в поставку по-умолчанию для всех дистрибутивов GNU/Linux и может быть отдельно установлена для Windows, а также небольшая правка файла конфигурации ssh. Необходимо для доступа к хосту git.example.org выполнить прокси-команду

nc -X 5 -x 10.1.1.1:1080 git.example.org 22

Также подключение можно выполнить через SOCKS4, или HTTPS-прокси, смотрите справочную страницу по netcat: man 1 nc.

В ~/.ssh/config на localhost это будет выглядеть следующим образом:

Host git.example.org
    ProxyCommand /usr/bin/nc -X 5 -x 10.1.1.1:1080 git.example.org 22
    Host git.example.org

Проверьте правильность пути до nc с помощью команды which nc.

Теперь с этого хоста можно использовать git-репозитории c git.example.org также, как если бы до него был прямой доступ, т.е.

git clone git@git.example.org:user/repo.git

Напоследок: ProxyCommand /usr/bin/nc -X 5 -x 10.1.1.1:1080 git.example.org 22 можно вынести первой строкой в ~/.ssh/config и тогда доступ до всех хостов будет осуществляться через указанный прокси-сервер.


Related Posts

Published by

ivnglkv

ivnglkv

Just another HTMLy user.