Git через проверку подлинности прокси-сервера
Я хочу сделать "git клон" через прокси-сервер. Проблема заключается в том, что мой прокси-сервер использует дайджест-аутентификацию. Поэтому я не могу найти ни в документации git, ни помочь тем, кто уже сделал.
Я просматриваю google-поиск и не могу найти полезные результаты.
спасибоs.
Ответы
Ответ 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 может ее поддерживать.
Ответ 5
Если вы клонируете SSH, ответ на близкий вопрос Как использовать GitHub через жесткие прокси? выглядит адаптируемым к вашей ситуации, но вместо Corkscrew, который еще не поддерживает аутентификацию дайджеста, используйте tunnel-auth.pl
от CPAN.