# Настройка прокси в Git: HTTPS, уровни конфига и как убрать прокси

Source: https://ipvolt.com/ru/guides/git-proxy-setup
Markdown: https://ipvolt.com/ru/guides/git-proxy-setup.md
Language: ru

[ipvolt — главная](https://ipvolt.com/ru.md) / [Руководства](https://ipvolt.com/ru/guides.md) / Настройка прокси в Git: HTTPS, уровни конфига и как убрать прокси

Интеграция
Опубликовано: 2026-10-13
8 мин чтения
Автор: ipvolt

Как настроить прокси в Git через git config http.proxy для HTTP и HTTPS, разобрать ошибки 407 и сертификатов и убрать действующую настройку. Стенд прилагается.

Чтобы пустить Git через прокси, когда remote работает по HTTP или HTTPS, начните с `http.proxy`, заданного для одной команды. Прежде чем прописать его в `git config` насовсем, проверьте, по какому протоколу работает remote и нет ли отдельных настроек для конкретного URL или remote. **Если сбросить общую настройку, эти отдельные настройки могут остаться в силе.**

Адреса в примерах условные. Наш стенд, который можно скачать, использует loopback, выдуманные учётные данные и временный репозиторий. Его десять проверок мы прогнали 12 октября 2026 года на Git 2.50.1 (Apple Git-155), Python 3.14.8 и macOS 15.7.4. Стенд проверяет маршрут и содержимое репозитория; работу провайдера прокси он не замеряет, а HTTPS, SSH и push не тестирует.

## Проверьте, по какому протоколу работает remote

В существующем репозитории посмотрите адрес remote локально:

```sh
git remote get-url origin
```

URL вида `https://` или `http://` означает, что Git работает через HTTP-транспорт. Remote вида `git@github.com:OWNER/REPO.git` или `ssh://git@HOST/REPO.git` работает по SSH. На SSH-соединение `http.proxy` не влияет: для этого транспорта следуйте инструкциям вашей организации по маршрутизации SSH. Если вы только собираетесь сделать `git clone`, проверьте URL, который будете клонировать. Если в URL встроены учётные данные, не оставляйте их в выводе, которым делитесь. [Документация по команде git и SSH](https://git-scm.com/docs/git#Documentation/git.txt-GITSSHCOMMAND).

## Сначала проверьте прокси на одной команде: git ls-remote или git clone

Задайте в окружении `GIT_PROXY_URL` и `GIT_REPO_URL`. `GIT_REPO_URL` — HTTP/HTTPS-remote, к которому у вас есть доступ, а `GIT_PROXY_URL` — URL шлюза из документации прокси, например `http://proxy.example:8080`:

```sh
git -c http.proxy="$GIT_PROXY_URL" \
    -c http.lowSpeedLimit=1 -c http.lowSpeedTime=20 \
    ls-remote "$GIT_REPO_URL"
```

Такая команда не оставляет в конфигурации постоянной записи о прокси. Параметры минимальной скорости обрывают зависшую передачу, но не ограничивают общее время работы команды. Список refs в ответе подтверждает, что ответил репозиторий, но сам по себе успех не доказывает, каким маршрутом шёл запрос. Чтобы клонировать, замените `ls-remote` на `clone` и укажите новый каталог назначения.

HTTPS-remote может работать через HTTP-шлюз: схема в URL прокси описывает соединение **с самим шлюзом**. Указывайте шлюз `https://`, только если он поддерживает TLS. [HTTP-параметры Git](https://raw.githubusercontent.com/git/git/v2.56.0/Documentation/config/http.adoc), [протоколы прокси в libcurl](https://curl.se/libcurl/c/CURLOPT_PROXY.html).

Учётные данные прокси и учётные данные репозитория — разные вещи. Согласно документации Git, если в URL прокси есть имя пользователя, но нет пароля, пароль запрашивается через механизм учётных данных Git. Используйте тот способ аутентификации, который поддерживает шлюз. Не храните настоящие URL с учётными данными в конфигурации, которой пользуются другие, и вычищайте их из диагностического вывода. [Учётные данные в Git](https://git-scm.com/docs/gitcredentials).

## Пропишите прокси в git config только там, где он нужен

Когда временная проверка сработала, выберите одну настройку. В командах ниже — условный шлюз без учётных данных:

| На что должен действовать прокси | Настройка | Где запускать |
| --- | --- | --- |
| Один HTTPS-хост | `git config --global 'http.https://github.com/.proxy' 'http://proxy.example:8080'` | В любом каталоге |
| Один существующий репозиторий | `git config --local http.proxy 'http://proxy.example:8080'` | Внутри этого репозитория |
| Один remote по имени | `git config --local remote.origin.proxy 'http://proxy.example:8080'` | Внутри этого репозитория |
| Все HTTP/HTTPS-remote текущего пользователя | `git config --global http.proxy 'http://proxy.example:8080'` | В любом каталоге |

Для локальной настройки нужен уже существующий репозиторий; для первого клонирования задайте прокси в самой команде или в пользовательском конфиге для конкретного URL. Сопоставление с URL и обычный приоритет уровней конфигурации — два независимых механизма. Настройка для конкретного remote — ещё один уровень переопределения. [Уровни конфигурации Git](https://git-scm.com/docs/git-config#_scopes), [параметры прокси для remote](https://raw.githubusercontent.com/git/git/v2.56.0/Documentation/config/remote.adoc).

## Что показал стенд маршрутизации

[Скрипт стенда](https://ipvolt.com/downloads/git-proxy-setup/git_proxy_lab.py) создаёт bare-репозиторий, HTTP-сервер origin и пересылающий прокси с аутентификацией. В успешных случаях clone/fetch проверяются ожидаемый коммит и точное содержимое файлов; в случаях с прямым соединением прокси не должен получить ни одного запроса. В [файле с результатами](https://ipvolt.com/downloads/git-proxy-setup/results.json) сохранены команды, запросы, ошибки и версии.

| Заданная конфигурация | Результат | Что это подсказывает |
| --- | --- | --- |
| `http.proxy` для одной команды | Через прокси; репозиторий проверен | Начинайте с этой контрольной проверки |
| Прокси для совпадающего URL | Через прокси; репозиторий проверен | Проверьте ключ для совпавшего URL |
| Запись для URL с другим путём | Напрямую; репозиторий проверен | Запись для URL действует не на все адреса |
| Правильный прокси для remote поверх неработающего общего | Через прокси; fetch проверен | Проверьте настройки этого remote |
| Пустой прокси для remote | Напрямую; fetch проверен | Отключение на уровне remote сработало |
| Пустой общий прокси в команде; в конфиге только общая пользовательская запись | Напрямую; репозиторий проверен | Это сбросило общую настройку |
| Пустой общий прокси в команде; в конфиге есть подходящая запись для URL | **Через прокси; репозиторий проверен** | Пустое общее значение не отменило запись для URL |
| Пустая подходящая запись для URL поверх общего прокси | Напрямую; репозиторий проверен | Меняйте саму совпавшую запись |
| Подходящий `no_proxy=127.0.0.1` | Напрямую; репозиторий проверен | Проверьте унаследованные правила обхода |
| Неверный выдуманный пароль прокси | Код выхода 128 / HTTP 407; запросов к origin нет | Сначала разберитесь с аутентификацией на шлюзе |

Все десять случаев соответствовали своим критериям приёмки, включая случай с намеренно отклонённой аутентификацией. Девять операций clone/fetch завершились успешно, и содержимое репозитория в них подтвердилось. Эти наблюдения относятся к локальному окружению Git/libcurl, зафиксированному в результатах.

Скачайте скрипт и [README](https://ipvolt.com/downloads/git-proxy-setup/README.md) в новый каталог и запустите:

```sh
python3 git_proxy_lab.py > local-results.json
```

Стенду нужен Git с поддержкой `GIT_CONFIG_GLOBAL` (появилась в Git 2.32) и Python с `ThreadingHTTPServer` (появился в Python 3.7); сторонние пакеты Python не нужны. Эти требования взяты из документации; сам стенд запускали только на Git 2.50.1 / Python 3.14.8. См. [примечания к выпуску Git 2.32](https://raw.githubusercontent.com/git/git/v2.32.0/Documentation/RelNotes/2.32.0.txt) и [документацию HTTP-сервера Python](https://docs.python.org/3/library/http.server.html). Стенд использует IPv4 loopback, отдельные файлы конфигурации Git и базовое окружение без унаследованных переменных прокси. Временные репозитории после прогона удаляются. Стенд отдаёт репозиторий по dumb HTTP и не проверяет smart HTTP, CONNECT, сертификаты, SOCKS, боевые системы аутентификации и SSH. Советы по сертификатам ниже взяты из документации. Документацию сверяли с исходниками Git 2.56.0; запускался бинарник Apple Git 2.50.1.

## Как убрать прокси в Git: найдите действующую настройку

Смотрите вывод только у себя: в значениях конфигурации могут быть учётные данные.

```sh
git config --show-origin --show-scope --get-regexp \
  '^(http\..*proxy|remote\..*\.proxy)$'
git config --get-urlmatch http.proxy "$GIT_REPO_URL"
```

Первая команда находит общие записи, записи для конкретных URL и для конкретных remote. Вторая показывает результат сопоставления по HTTP URL; настройку remote она не учитывает и реальный сетевой маршрут не доказывает. Проверьте также переменные прокси и обхода в окружении того процесса, который на самом деле запускается, — см. [руководство по переменным окружения](/ru/guides/proxy-environment-variables).

Удаляйте только нужный ключ и только на нужном уровне. Для записи с хостом из примера:

```sh
git config --global --unset-all 'http.https://github.com/.proxy'
```

Для remote из примера выполните внутри его репозитория:

```sh
git config --local --unset-all remote.origin.proxy
```

Для общей пользовательской записи — `git config --global --unset-all http.proxy`. Если такого ключа нет, команда завершится с ненулевым кодом. После удаления в силу может вступить другая, оставшаяся настройка, поэтому посмотрите конфигурацию ещё раз и повторите проверку маршрута. Наш стенд показывает, почему, если очистить только `http.proxy`, прокси для совпавшего URL может остаться в силе.

## Определите, какой слой даёт сбой

| Симптом | Что проверить дальше |
| --- | --- |
| Имя прокси не разрешается или соединение отклонено | Имя хоста и порт выбранного шлюза, доступ к сети |
| HTTP 407 | Аккаунт на шлюзе и поддерживаемый способ аутентификации; пройдите [чек-лист по 407](/ru/guides/fix-proxy-error-407) |
| Ошибка аутентификации в репозитории после успешного соединения | Права доступа к репозиторию и credential helper для него |
| Ошибка проверки сертификата | Издатель, имя хоста и доверие к утверждённому CA для того TLS-соединения, которое падает |
| SSH-remote по-прежнему не работает | Маршрутизация SSH и политика для этого транспорта |
| Успех без признаков того, что запрос прошёл через прокси | Настройки URL и remote, обход прокси в окружении и логи шлюза |

Для утверждённого корпоративного CA, используемого при перехвате TLS, в Git есть `http.sslCAInfo`; для TLS-соединения с HTTPS-прокси — отдельный `http.proxySSLCAInfo`. Доверенные сертификаты получите у администратора и не отключайте проверку. Это два разных соединения, и HTTP-стенд не проверяет ни одно из них. Schannel в Windows может брать сертификаты из своего хранилища, а не из переданного CA-файла; следуйте политике для своей платформы. [Параметры TLS в Git](https://raw.githubusercontent.com/git/git/v2.56.0/Documentation/config/http.adoc).

Чтобы проверить шлюз без участия Git, используйте [базовую проверку одним запросом curl с таймаутами](/ru/guides/curl-proxy-setup#отправьте-один-ограниченный-запрос-как-базовую-проверку). Успешный запрос curl не говорит о том, какой маршрут выберет Git.

При таймауте сначала найдите этап, на котором всё зависает, и только потом увеличивайте лимиты; см. [диагностику таймаутов прокси](/ru/guides/proxy-timeout-troubleshooting).

ipvolt продаёт мобильные прокси и резидентные прокси от $0.60/ГБ: [посмотрите цены](https://ipvolt.com/ru/pricing).

## Источники и дополнительное чтение

- [Git HTTP options](https://raw.githubusercontent.com/git/git/v2.56.0/Documentation/config/http.adoc)
- [Git configuration](https://git-scm.com/docs/git-config)
- [Git remote options](https://raw.githubusercontent.com/git/git/v2.56.0/Documentation/config/remote.adoc)

## Связанные руководства

- [Переменные окружения прокси: HTTP_PROXY и NO_PROXY](https://ipvolt.com/ru/guides/proxy-environment-variables.md)
- [Как исправить ошибку прокси 407, не гадая](https://ipvolt.com/ru/guides/fix-proxy-error-407.md)
- [Диагностика таймаутов прокси: по одному этапу за раз](https://ipvolt.com/ru/guides/proxy-timeout-troubleshooting.md)

## Об ipvolt

Примеры используют обобщённые настройки прокси со ссылками на оригинальную техническую документацию. Поведение конкретного продукта уточняйте у своего провайдера. ipvolt продаёт мобильные прокси и резидентные прокси от $0.60/ГБ.

[Читать оригинал на английском](https://ipvolt.com/guides/git-proxy-setup.md)

## Подключите свой первый прокси.

Мобильные — от $9 в день. Резидентные — от $0.60 за ГБ.

[Купить мобильный прокси](https://ipvolt.com/dashboard/mobile)

[Купить резидентные прокси](https://ipvolt.com/dashboard/residential)

