it-swarm.com.ru

Начало работы с прокси-сервером

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

Мне нужно проверить код с сервера Git, он показывает «Время ожидания запроса» каждый раз. Как мне обойти это? 

Кроме того, как я могу установить прокси-сервер?

829
PlagueHammer

Команда для использования:

git config --global http.proxy http://proxyuser:[email protected]:8080
  • измените proxyuser на вашего прокси-пользователя
  • замените proxypwd на ваш пароль прокси
  • замените proxy.server.com на URL вашего прокси-сервера
  • замените 8080 на прокси-порт, настроенный на вашем прокси-сервере

Если вы в любое время решите сбросить этот прокси и работать без прокси:

Команда для использования:

git config --global --unset http.proxy

Наконец, чтобы проверить текущий установленный прокси:

git config --global --get http.proxy
1498
Salim Hamidi

Это сработало для меня в Windows XP за корпоративным брандмауэром.

Мне не нужно было устанавливать какой-либо локальный прокси или любое другое программное обеспечение, кроме git v1.771, из http://code.google.com/p/msysgit/downloads/list?can=3

$ git config --global http.proxy http://proxyuser:[email protected]:8080
$ git config --system http.sslcainfo /bin/curl-ca-bundle.crt
$ git remote add Origin https://mygithubuser:[email protected]/repoUser/repoName.git
$ git Push Origin master

proxyuser = прокси-пользователь, которого назначил наш ИТ-отдел, в моем случае это тот же пользователь Windows, которого я использую для входа на свой ПК, пользователь Active Directory

proxypwd = пароль моего прокси-пользователя

proxy.server.com:8080 = имя и порт прокси, я получил его из Панели управления, Свойства обозревателя, Соединения, Кнопка настроек Lan, Кнопка Дополнительно в разделе Прокси-сервер, используйте имя сервера и порт на первом (http) строка.

mygithubuser = пользователь, которого я использую для входа на github.com

mygithubpwd = пароль для моего пользователя github.com

repoUser = пользователь-владелец репо

repoName = название репо

124
alvaro

Задайте системную переменную с именем http_proxy со значением ProxyServer:Port. Это самое простое решение. Соответственно, используйте https_proxy, как указано в комментариях daefu.

Установка gitproxy (как упоминает sleske) - это еще один вариант, но для этого требуется «команда», которая не так проста, как приведенное выше решение.

Ссылки: http://bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html

48
PlagueHammer

Если способ настройки прокси-сервера из командной строки не работает, Вы, вероятно, можете просто отредактировать .gitconfig (в корне вашего профиля, который может скрываться как в C:\Documents and Settings, так и на некоторых сетевых дисках). и добавьте это:

[http]
    proxy = http://username:[email protected]:8080

Тем не менее, YMMV охватывает только первый шаг настройки командной строки. Возможно, вам также придется отредактировать системную конфигурацию git, и я понятия не имею, где они это спрятали.

36
Randakar

В качестве альтернативы использованию git config --global http.proxy address:port вы можете установить прокси в командной строке:

git -c "http.proxy=address:port" clone https://...

Преимущество в том, что прокси не установлен постоянно. Под Bash вы можете установить псевдоним:

alias git-proxy='git -c "http.proxy=address:port"'
28
Steve Pitchers

Если вы используете Ubuntu, сделайте следующее ...

Шаг 1: Установите штопор

$ Sudo apt-get install corkscrew

Шаг 2: Напишите скрипт с именем git-proxy.sh и добавьте следующее

#!/bin/sh

exec corkscrew <name of proxy server> <port> $*

# <name_of_proxy_server> and <port> are the ip address and port of the server
# e.g. exec corkscrew 192.168.0.1 808 $*

Шаг 3: Сделайте скрипт исполняемым

$ chmod +x git-proxy.sh

Шаг 4: Настройте прокси-команду для GIT, установив переменную среды

$ export GIT_PROXY_COMMAND="/<path>/git-proxy.sh"

Теперь используйте команды git, такие как

git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
19
Sk Hasanujjaman

Столкнулся с той же проблемой из-за нескольких файлов .gitconfig в Windows, следуя приведенным ниже инструкциям, чтобы исправить это:

Шаг 1: Открыть Git BASH

Шаг 2: Найдите .gitconfig, выполнив следующую команду:

git config --list --global --show-Origin

Шаг 3: Скопируйте ниже содержание в .gitconfig:

[http]
    proxy = http://YOUR_PROXY_USERNAME:[email protected]:YOUR.PROXY.SERVER.PORT
    sslverify = false
[https]
    proxy = http://YOUR_PROXY_USERNAME:[email protected]:YOUR.PROXY.SERVER.PORT
    sslverify = false
[url "http://github.com/"]
    insteadOf = git://github.com/

[user]
    name = Arpit Aggarwal
    email = [email protected]
11
Arpit

Попробуйте добавить в файл ~/.gitconfig следующее:

[http]
    proxy = http://proxy:8080
[https]
    proxy = http://proxy:8080
[url "https://"]
    insteadOf = git://
9
augustocbx

Для протокола git (git: // ...) установите socat и напишите такой скрипт:

#!/bin/sh

exec socat - socks4:your.company.com:$1:$2

сделайте его исполняемым, поместите его в свой путь и в своем ~/.gitconfig установите для core.gitproxy имя этого скрипта.

7
ashutosh

В дополнение к этим ответам я счел полезным рассмотреть следующие 2 момента:

Возможно, потребуется применить схему аутентификации:

[http]
    # https://github.com/git/git/blob/master/Documentation/config.txt
    proxyAuthMethod = anyauth|basic|digest|negotiate|ntlm

Также, как правило, со схемой аутентификации NTLM, может потребоваться явно предоставить домен AD.

В git bash:

echo %userdomain%

И обновите http.proxy соответственно:

git config --global http.proxy http://DOMAIN\\proxyuser:[email protected]:8080

В любом случае, расследованию может помочь добавление журналов CURL:

export GIT_CURL_VERBOSE=1
5
blacelle

Есть кое-что, что я заметил и хочу поделиться здесь:

git config --global http.proxy http://<proxy address>:<port number>

Приведенный выше метод не будет работать для URL-адресов ssh: (т.е. [email protected]:<user name>/<project name>.git)

git clone [email protected]:<user name>/<project name>.git // this will not use the above proxy!

И все не изменится, если мы установим SSH через порт HTTPS ( https://help.github.com/en/articles/using-ssh-over-the-https-port ), потому что он только меняет порт (По умолчанию 22) ssh-соединение подключается к.

(Не носитель языка, пожалуйста, уточните мои слова, если это необходимо)

4
miāo

Я работаю в Windows XP на работе (штат/правительство), поэтому я провел исследование и нашел это здесь и это сработало для меня. Надеюсь это поможет :)

Переменная среды http_proxy

Если вы используете прокси-сервер или брандмауэр, вам может потребоваться установить переменную среды http_proxy, чтобы получить доступ к некоторым URL-адресам из командной строки . Пример: установка ppm для Perl или применение rpm в linux, обновление ubuntu

Задайте для переменной http_proxy имя хоста или IP-адрес прокси-сервера: Http_proxy = http: // [proxy.example.org]

Если прокси-серверу требуются имя пользователя и пароль, включите их в следующую форму: Http_proxy = http: // [username: [email protected]]

Если прокси-сервер использует порт, отличный от 80, укажите номер порта: Http_proxy = http: // [username: [email protected]: 8080]

Windows XP

  1. Откройте панель управления и щелкните значок «Система».
  2. На вкладке «Дополнительно» нажмите «Переменные среды».
  3. Нажмите «Создать» на панели «Системные переменные».
  4. Добавьте http_proxy с соответствующей информацией о прокси (см. Примеры выше).

Linux, Solaris или HP-UX

Задайте переменную среды http_proxy, используя команду, относящуюся к вашей командной консоли (например, set или export). Чтобы сделать это изменение постоянным, добавьте команду в соответствующий файл профиля для командной консоли. Например, в bash добавьте строку, подобную следующей, в ваш файл .bash_profile или .bashrc:

  1. http_proxy = http: // [имя пользователя: пароль @ имя хоста: порт];
  2. экспорт $ http_proxy
4
Shak Daniel

Если у вас есть tsocks или proxychains установлены и настроены, вы можете

$ tsocks git clone <you_repository>

или же

$ proxychains git clone <you_repository>

чтобы сделать его короче, я создал символьную ссылку /usr/bin/p для proxychains, чтобы использовать ее следующим образом

p git clone <you_repository>

и я могу использовать его для прокси любой команды,

p <cmd-need-be-proxied>

кстати, proxychains долго не обновляется, вы можете попробовать proxychians-ng

3
fangxing

Настройка Git Proxy на терминале

если 

  • вы не хотите устанавливать прокси для каждого из ваших git-проектов вручную, один за другим
  • всегда хочу использовать один и тот же прокси для всех ваших проектов

Установите это глобально один раз

git config --global http.proxy username:[email protected]_url:proxy_port
git config --global https.proxy username:[email protected]_url:proxy_port

если вы хотите установить прокси только для одного проекта git (могут быть ситуации, когда вы вообще не захотите использовать один и тот же прокси или любой прокси для некоторых соединений git)

//go to project root
cd /bla_bla/project_root
//set proxy for both http and https
git config http.proxy username:[email protected]_url:proxy_port
git config https.proxy username:[email protected]_url:proxy_port

если вы хотите отобразить текущие настройки прокси

git config --list 

если вы хотите удалить прокси глобально

git config --global --unset http.proxy
git config --global --unset https.proxy

если вы хотите удалить прокси только для одного git root

//go to project root
cd /bla-bla/project_root
git config --unset http.proxy
git config --unset https.proxy
2
Add080bbA

Для пользователей Windows: если git config или set http_proxy= не работает, этот ответ может помочь:

замените протокол git:// хранилища git на http://. Обратите внимание, в любом случае вам сначала нужно будет установить http_proxy.

1
DomTomCat

вот настройка прокси

git config --global http.proxy http://<username>:<pass>@<ip>:<port>
git config --global https.proxy http://<username>:<pass>@<ip>:<port>
1
hannad rehman

После того, как я без устали попробовал каждое решение на этой странице, я решил использовать вместо него ключ SSH! 

  1. Open Git Bash
  2. $ ssh-keygen.exe -t rsa -C 
  3. Откройте своего провайдера Git (Github, Bitbucket и т.д.)
  4. Добавьте копию содержимого файла id_rsa.pub на входную страницу провайдера Git (проверьте ваш профиль)
0
Janac Meena

Я перепробовал все приведенные выше ответы, и у меня ничего не получалось, так как были проблемы с кодировкой пароля прокси.

Эта команда сработала:

git config --global http-proxy http://[email protected]:PortNumber 

Не вводите пароль в вашей команде. Он будет динамически запрашивать при попытке подключиться к любому git-репо.

0
Ishtdeep Hora

Я следовал большинству ответов, которые были рекомендованы здесь. Сначала я получил следующую ошибку:

смертельный: невозможно получить доступ ' https://github.com/folder/sample.git/ ': schannel: next Ошибка InitializeSecurityContext: неизвестная ошибка (0x80092012) - Функция отзыва не смогла проверить отзыв для сертификат.

Затем я попробовал следующую команду @Salim Hamidi 

git config --global http.proxy http://proxyuser:[email protected]:8080

Но я получил следующую ошибку:

смертельный: невозможно получить доступ ' https://github.com/folder/sample.git/ ': полученный HTTP-код 407 с прокси после подключения

Это может произойти, если прокси-сервер не может проверить сертификат SSL. Поэтому мы хотим убедиться, что проверка ssl отключена (не рекомендуется для ненадежных сайтов), поэтому я сделал следующие шаги, которые были рекомендованы @Arpit, но с небольшими изменениями:

1. Сначала убедитесь, что удалили все предыдущие настройки прокси:

git config --global --unset http.proxy

2. Затем перечислите и получите содержимое gitconfig. 

git config --list --show-Origin

3.Последнее обновление содержимого файла gitconfig, как показано ниже:

[http]
sslCAInfo = C:/yourfolder/AppData/Local/Programs/Git/mingw64/ssl/certs/ca-bundle.crt
sslBackend = schannel
proxy = http://proxyuser:[email protected]:8080
sslverify = false
[https]
proxy = http://proxyuser:[email protected]:8080
sslverify = false
0
Wael Almadhoun