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

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

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

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

21 ответ

Решение

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

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

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

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

git config --global --unset http.proxy

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

git config --global --get http.proxy

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

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

$ git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
$ git config --system http.sslcainfo /bin/curl-ca-bundle.crt
$ git remote add origin https://mygithubuser:mygithubpwd@github.com/repoUser/repoName.git
$ git push origin master

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

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

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

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

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

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

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

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

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

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

Как альтернатива использованию 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"'

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

[http]
    proxy = http://username:password@proxy.at.your.org:8080

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

Если вы используете 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

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

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

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

git clone git@github.com:<user name>/<project name>.git // will not use the http proxy

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

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

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

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

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

Шаг 1: Откройте Git BASH

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

git config --list --global --show-origin

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

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

[user]
    name = Arpit Aggarwal
    email = aggarwalarpit.89@gmail.com

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

#!/bin/sh

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

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

Я работаю на 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:password@proxy.example.org]

Если прокси-сервер использует порт, отличный от 80, укажите номер порта: http_proxy = http: // [username: password@proxy.example.org: 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

В дополнение к этим ответам я нашел полезным рассмотреть следующие 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:proxypwd@proxy.server.com:8080

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

export GIT_CURL_VERBOSE=1

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

$ 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

Настройка git proxy на терминале

если

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

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

git config --global http.proxy username:password@proxy_url:proxy_port
git config --global https.proxy username:password@proxy_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:password@proxy_url:proxy_port
git config https.proxy username:password@proxy_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

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

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

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

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

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

git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080

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

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

Это может произойти, если прокси-сервер не может проверить сертификат 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:proxypwd@proxy.server.com:8080
sslverify = false
[https]
proxy = http://proxyuser:proxypwd@proxy.server.com:8080
sslverify = false

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

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

git config --global http-proxy http://username@proxy.example.com:PortNumber 

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

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

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

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

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

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

      cd /path/to/new/clone/
git init .
git config http.proxy http://...myProxy.com:myPort
git config https.proxy https://...myProxy.com:myPort
git remote add origin https://github.com/opencv/opencv.git
git fetch origin
git checkout -b master --track origin/master

Примечание: мне нужно былоhttps.proxy(нетhttp.proxy), чтобы это работало.

Примечание. Настройки прокси-сервера в Windows 10 можно найти по адресуSettings -> Network&Internet -> Proxy -> Address + Port

альтернативой использованию прокси-сервера является использование SSH . В настройках git настройте удаленный источник на адрес ssh. Затем используйте команду ssh-keygen, которая дает вам открытый ключ, который вы можете установить в настройках своей учетной записи GitLab или Gitab и логин соответственно сделано...

1-проверьте, какие пульты используются, запустив git remote -vв вашем Git-клиенте.

2-если это URL-адрес http (s), измените его на адрес ssh, запустите: git remote set-url <remote name, e.g. origin> <new SSH URL>Например

      git remote set-url git@gitlab.com:example/myproject.git

3-чтобы сгенерировать ключ ssh для входа в систему, запустите: ssh-keygen -o, эта команда генерирует открытый (файл id_rsa.pub) и закрытый ключи.

4-копировать содержимое открытого ключа . (из файла id_rsa.pub)

5-перейдите в раздел профиля gitlab/gitup/.... > settings/ssh-key . создайте новый ключ ssh и вставьте содержимое открытого ключа

Другие вопросы по тегам