Git через дайджест аутентификации прокси - PullRequest
18 голосов
/ 18 января 2010

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

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

Thxs.

Ответы [ 6 ]

25 голосов
/ 27 марта 2013

Просто, чтобы сэкономить несколько мгновений поиска ответа Беннета:

  1. Очистить старые настройки:
    >git config --global --unset https.proxy
    >git config --global --unset http.proxy
  2. Установить новые настройки:
    >git config --global https.proxy https://USER:PWD@proxy.whatever:80
    >git config --global http.proxy http://USER:PWD@proxy.whatever:80 1011 *
    *

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

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

17 голосов
/ 03 июня 2010

Мне удалось выполнить клон git через прокси-сервер с проверкой подлинности, установив для переменной среды http_proxy значение http://username:password@proxyhost:80

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

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

2 голосов
/ 26 февраля 2015

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

Но это предполагает, что у вас установлен curl 7.10.7+, который Git не проверял до Git 2.3.2+ (1 квартал 2015 года)

Это исправлено с помощью commit 1c2dbf2 от Tom G. Christensen (tgc)

http: поддержка curl <7.10.7 </p>

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

1 голос
/ 09 ноября 2018

Использование

git config --global http.proxy

или больше в целом, если у пользователя или пароля есть какой-либо специальный символ, такой как "$ \" и т. д., вам нужно кодировать его по URL, создавая что-то вроде:% 24% 5C

надеюсь, это поможет, так как я обычно злюсь на это ...

1 голос
/ 18 января 2010

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

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

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

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

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

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

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

0 голосов
/ 19 января 2010

Если вы клонируете по SSH, ответ на тесно связанный вопрос Как использовать GitHub через жесткие прокси? выглядит адаптируемым к вашей ситуации, но вместо Corkscrew который еще не поддерживает дайджест-аутентификацию, используйте tunnel-auth.pl из CPAN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...