Начало работы с прокси-сервером
Как мне заставить 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
- Откройте панель управления и щелкните значок "Система".
- На вкладке "Дополнительно" щелкните "Переменные среды".
- Нажмите "Создать" на панели "Системные переменные".
- Добавьте 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
Если у вас установлены и настроены 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!
- Open Git Bash
- $ ssh-keygen.exe -t rsa -C
- Откройте своего провайдера Git (Github, Bitbucket и т. Д.)
- Добавьте копию содержимого файла 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 и вставьте содержимое открытого ключа