Подтвердить что ты не робот

Git через проверку подлинности прокси-сервера

Я хочу сделать "git клон" через прокси-сервер. Проблема заключается в том, что мой прокси-сервер использует дайджест-аутентификацию. Поэтому я не могу найти ни в документации git, ни помочь тем, кто уже сделал.

Я просматриваю google-поиск и не могу найти полезные результаты.

спасибоs.

4b9b3361

Ответ 1

Просто, чтобы сэкономить несколько минут поискового запроса на Bennet Ответ:

  • Удалить старые настройки:
    >git config --global --unset https.proxy
    >git config --global --unset http.proxy
  • Установите новые параметры:
    >git config --global https.proxy https://USER:[email protected]:80
    >git config --global http.proxy http://USER:[email protected]:80

  • Проверьте новые настройки:
    >git config --get https.proxy
    >git config --get http.proxy

ПРИМЕЧАНИЕ. Когда вы проверяете, вы должны увидеть те же значения, что и вы.

Ответ 2

Я смог сделать клон git через аутентифицированный прокси, установив переменную окружения http_proxy в http://username:[email protected]:80

Затем работала простая ole git clone.

(Прокси-сервер - это какая-то корпоративная вещь Windows, поэтому мое имя пользователя действительно было похоже на имя домена \username. Понял, что мне нужен домен.)

Ответ 3

Git не поддерживает аутентифицированные прокси-серверы. Вы можете проверить http.c в репозитории git.git; чтобы поддерживать аутентифицированные прокси-серверы вообще, ему нужно было бы установить CURL_PROXYUSERPWD, чтобы установить имя пользователя и пароль, но эта строка не в этом файле.

Одним из возможных решений было бы исправить Git; добавьте еще несколько параметров конфигурации в http.c, например http.proxyuser, http.proxypass, чтобы установить имя пользователя и пароль для прокси и http.proxyauth, чтобы установить метод проверки подлинности, а затем передать их в качестве подходящего параметры конфигурации cURL.

Если вы не хотите взломать исходный код Git, вы можете настроить свой собственный локальный прокси-сервер, который не нуждается в аутентификации, а затем переадресовать его на прокси-сервер, для которого требуется аутентификация. Squid поддерживает этот режим работы, хотя конфигурация может быть немного сложной; Я нашел примерную конфигурацию, которая предназначена для демонстрации этой настройки, хотя я не проверял, что она работает сама.

изменить. Неважно, после проверки исходного кода Squid, он поддерживает только базовую аутентификацию, не дайджест-аутентификация при отправке запросов одноранговому узлу:

httpHeaderPutStrf(hdr_out, header, "Basic %s", base64_encode(orig_request->peer_login));

Я не нашел прокси-серверов, которые могут передать запрос другому прокси с активированной аутентификацией дайджеста; если вы можете найти тот, который поддерживает дайджест auth для восходящего прокси-сервера, я бы рекомендовал его использовать.

В противном случае я бы рекомендовал использовать другой протокол, кроме HTTP; используйте ssh:, если вам нужна аутентификация или необработанный протокол git:, если вы просто вытаскиваете изменения с общедоступного сервера.

Ответ 4

Обратите внимание, что Git поддерживает HTTP-прокси с Git 1.7.10, Apr. 2012, commit dd61399.

Но это означает, что у вас установлен завиток 7.10.7+, что-то Git не проверялось до Git 2.3.2+ (Q1 2015)

Это исправлено с помощью commit 1c2dbf2 Том Г. Кристенсен (tgc)

http: support curl < 7.10.7

Commit dd61399 представил поддержку HTTP-прокси, требующих аутентификации, но она полагается на параметр CURL_PROXYAUTH, который был добавлено в curl 7.10.7.
Это позволяет убедиться, что аутентификация прокси-сервера включена, только если libcurl может ее поддерживать.