Как мне заставить Git использовать прокси-сервер?
Мне нужно проверить код с сервера Git, но он показывает «Время ожидания запроса» каждый раз. Как мне обойти это?
Кроме того, как я могу установить прокси-сервер?
Как мне заставить Git использовать прокси-сервер?
Мне нужно проверить код с сервера Git, но он показывает «Время ожидания запроса» каждый раз. Как мне обойти это?
Кроме того, как я могу установить прокси-сервер?
Ответы:
Команда для использования:
git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
proxyuser
на свой прокси-пользовательproxypwd
на свой пароль проксиproxy.server.com
на URL вашего прокси-сервера8080
на прокси-порт, настроенный на вашем прокси-сервереОбратите внимание, что это работает как для репозиториев http, так и для https.
Если вы в любое время решите сбросить этот прокси и работать без прокси:
Команда для использования:
git config --global --unset http.proxy
Наконец, чтобы проверить текущий установленный прокси:
git config --global --get http.proxy
%40
в качестве замены @
строки имени пользователя / пароля, хотя я сам не проверял это. Надеюсь, поможет. :-)
Это работало для меня, в 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 = название репо
git config --global http.sslcainfo MY_NEW_CERTS_BUNDLE.crt
плюс сертификаты, загруженные как описано в simplicidade.org/notes/archives/2011/06/… (благодаря: stackoverflow.com/a/7206627/98528 ) сделали это для меня!
git://
протокол.
Задайте системную переменную с именем http_proxy
со значением ProxyServer:Port
. Это самое простое решение. Соответственно, используйте https_proxy
как указано в комментариях daefu.
Установка gitproxy (как упоминает sleske) - это еще один вариант, но для этого требуется «команда», которая не так проста, как приведенное выше решение.
Ссылки: http://bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html
http_proxy
требуется для URL-адресов HTTP и https_proxy
требуется для URL-адресов HTTPS. Кроме того, можно просто установить all_proxy
для всех URL-адресов. Смотрите ENVIRONMENT
раздел в curl (1) . Однако при настройке параметров git-config http.proxy
используется как для URL-адресов HTTP, так и для HTTPS. Смотрите http.proxy
в git-config (1) .
Если способ настройки прокси-сервера из командной строки не работает, вы, вероятно, можете просто отредактировать .gitconfig (в корне вашего профиля, который может скрываться как в C: \ Documents and Settings, так и на каком-то сетевом диске) и добавить это :
[http]
proxy = http://username:password@proxy.at.your.org:8080
Тем не менее, YMMV охватывает только первый этап настройки командной строки. Возможно, вам придется изменить конфигурацию системного git, и я понятия не имею, где они это спрятали.
В качестве альтернативы использованию 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"'
Если вы используете 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
"$@"
вместо $*
. Смотрите руководство по вашей оболочке для более подробной информации.
Столкнулся с той же проблемой из-за нескольких .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
Попробуйте поместить в файл ~ / .gitconfig следующее:
[http]
proxy = http://proxy:8080
[https]
proxy = http://proxy:8080
[url "https://"]
insteadOf = git://
Для протокола git (git: // ...) установите socat и напишите такой скрипт:
#!/bin/sh
exec socat - socks4:your.company.com:$1:$2
сделайте его исполняемым, поместите его в свой путь и в свой ~/.gitconfig
набор core.gitproxy
к имени этого скрипта.
socat STDIO PROXY:%proxy%:%1:%2,proxyport=%PROXYPORT%
set GIT_PROXY_COMMAND=path\to\script
чтобы GIT использовал прокси, не вмешиваясь в git config.
Есть кое-что, что я заметил и хочу поделиться здесь:
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 соединяется с.
(Не носитель английского языка, пожалуйста, уточните мои слова, если это необходимо)
Я работаю на 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
- Откройте панель управления и щелкните значок «Система».
- На вкладке «Дополнительно» нажмите «Переменные среды».
- Нажмите «Создать» на панели «Системные переменные».
- Добавьте http_proxy с соответствующей информацией о прокси (см. Примеры выше).
Linux, Solaris или HP-UX
Установите переменную среды http_proxy с помощью команды, специфичной для вашей оболочки (например, set или export). Чтобы сделать это изменение постоянным, добавьте команду в соответствующий файл профиля для оболочки. Например, в bash добавьте строку, подобную следующей, в ваш файл .bash_profile или .bashrc:
- http_proxy = http: // [имя пользователя: пароль @ имя хоста: порт];
- экспорт $ 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
git config --global http.proxyAuthMethod basic
. Git gersion 2.8.3 не отправлял никакой аутентификации, пока я не установил этот параметр конфигурации.
Если у вас установлены и настроены 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 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://
протокол репозиторий с http://
. Обратите внимание, вы должны будете установить http_proxy
первое, в любом случае.
После того, как я без устали пробовал каждое решение на этой странице, я решил использовать вместо него ключ SSH!