Гайд по git · 1 мин чтения

git через прокси: HTTP и SOCKS5

git работает с прокси по-разному через HTTPS и через SSH. Разбираем оба случая: http.proxy для HTTPS-ремоутов (включая SOCKS5) и ProxyCommand для SSH — с привязкой к конкретным хостам, чтобы маршрутизировался только нужный трафик.

Ремоуты по HTTPS и по SSH

Как проксировать git, зависит исключительно от протокола вашего ремоута. Для ремоутов по HTTPS (адреса вида https://github.com/...) git ходит через libcurl, поэтому уважает конфиг http.proxy и стандартные переменные окружения http_proxy — а раз это libcurl, он принимает SOCKS5-прокси по схеме socks5h:// точно так же, как curl. Для ремоутов по SSH ([email protected]:...) git в сеть вообще не лезет — это делает SSH, поэтому туннель настраивается через ProxyCommand в файле конфигурации SSH.

У s4m есть оба эндпоинта: SOCKS5 на порту 1080 и HTTP на 3128, с авторизацией USER:PASS на proxy.s4m.online. Для HTTPS-ремоутов socks5h:// оставляет DNS удалённым; для SSH — ProxyCommand с nc или ncat проводит SSH-поток сквозь SOCKS5. Смотрите страницу прокси и что такое SOCKS5; та же идея с ProxyCommand есть и в сравнении SOCKS5 и HTTP.

git через прокси: HTTPS и SSH

http.proxy для HTTPS-ремоутов (SOCKS5 или HTTP) плюс ProxyCommand для SSH. Привязка к конкретному URL спасает от проксирования всего подряд. Замените USER:PASS.

bash
# --- HTTPS remotes: SOCKS5 with remote DNS ---
git config --global http.proxy socks5h://USER:[email protected]:1080
# or the HTTP proxy:
git config --global http.proxy http://USER:[email protected]:3128

# --- Scope the proxy to ONE host only (leave the rest direct) ---
git config --global http.https://github.com/.proxy \
    socks5h://USER:[email protected]:1080

# --- Remove the proxy later ---
git config --global --unset http.proxy

# --- SSH remotes: tunnel git@... through SOCKS5 via ~/.ssh/config ---
cat >> ~/.ssh/config <<'CFG'
Host github.com
  HostName github.com
  User git
  ProxyCommand nc -X 5 -x proxy.s4m.online:1080 %h %p
CFG
# -X 5 = SOCKS5; nc/ncat must be installed.

# --- One-off, no persistent config ---
git -c http.proxy=socks5h://USER:[email protected]:1080 clone https://example.com/repo.git

Как правильно завести git за прокси

Сначала определите тип ремоута, потом примените подходящий конфиг.

Определите протокол ремоута

Выполните git remote -v. Адрес на https:// работает через http.proxy; адрес вида git@host: идёт по SSH, и ему нужен ProxyCommand.

Для HTTPS задайте http.proxy

Берите git config --global http.proxy с socks5h://proxy.s4m.online:1080, чтобы DNS резолвился удалённо, или HTTP-эндпоинт на 3128. Если прокси нужен только для одного хоста, привяжите настройку к конкретному URL.

Для SSH добавьте ProxyCommand

В ~/.ssh/config добавьте ProxyCommand nc -X 5 -x proxy.s4m.online:1080 %h %p в соответствующий блок Host. Если nc/ncat не установлен — поставьте.

Проверьте клонированием

Склонируйте небольшой репозиторий и убедитесь, что всё проходит. Если висит — перепроверьте эндпоинт и учётные данные и убедитесь, что настроили именно тот протокол.

Привязка к хосту, авторизация и честность

Гонять весь трафик git через прокси нужно редко. git умеет задавать прокси для отдельного URL: http.https://github.com/.proxy действует только на этот хост, а остальные ремоуты остаются прямыми. Так внутренние зеркала работают на полной скорости, а внешний хост идёт сквозь прокси. Учётные данные живут прямо в URL прокси; если в пароле есть спецсимволы, закодируйте их в URL-формате.

Прокси s4m — это датацентровые SOCKS5- и HTTP-эндпоинты с авторизацией и оплатой по фактическому трафику: хорошо ложится на CI-раннеры, которые тянут зависимости из-под контролируемого выхода, или на доступ к git-хосту из ограниченной сети. Они датацентровые, а не резидентные, и прокси меняет только сетевой путь — не ваши учётные данные git и не SSH-ключи. Если CI нужен один адрес выхода для белого списка, возьмите выделенный персональный IP. 407 по HTTPS означает неверные данные прокси — смотрите руководство по 407. Эндпоинты проверяйте инструментами и читайте документацию API.

FAQ

Ответы на вопросы

Как заставить git ходить через SOCKS5-прокси?

Для HTTPS-ремоутов задайте git config --global http.proxy socks5h://USER:[email protected]:1080 — git работает через libcurl, поэтому принимает SOCKS5 так же, как curl. Для SSH-ремоутов вместо этого используйте ProxyCommand в ~/.ssh/config.

Действует ли http.proxy на SSH-ремоуты (git@...)?

Нет. http.proxy влияет только на HTTPS-ремоуты. SSH-ремоуты проксируются на уровне SSH через ProxyCommand — например, nc -X 5 -x proxy.s4m.online:1080 %h %p для SOCKS5.

Как пустить через прокси только один git-хост?

Используйте конфиг для конкретного URL: git config --global http.https://github.com/.proxy . Через прокси пойдёт только этот хост, остальные ремоуты останутся прямыми.

Как убрать прокси из git?

Выполните git config --global --unset http.proxy (и то же самое для вариантов под конкретный URL) или, если ремоут по SSH, уберите строку ProxyCommand из ~/.ssh/config.

Клонируйте из-за прокси

Прокси с авторизацией: SOCKS5 (1080) и HTTP (3128) на proxy.s4m.online — готовы к http.proxy и к ProxyCommand в SSH. Оплата по фактическому трафику, выделенный IP для белых списков CI.

Эту страницу нашли по запросу

Реальные поисковые фразы, на которые отвечает эта страница — по ссылкам откроются материалы, раскрывающие тему глубже.