Як змусити 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 repos.
Якщо ви вирішите будь-коли скинути цей проксі і працювати без проксі:
Команда для використання:
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 = ім'я проксі і порт проксі, я отримав його з панелі керування, параметрів Інтернету, підключень, кнопки "Налаштування", додаткової кнопки в розділі проксі-сервера, використовуйте ім'я сервера та порт у першому (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
як в коментарях зазначено даефу.
Налаштування gitproxy (як згадує sleske) - це інший варіант, але для цього потрібна "команда", яка не є такою простою, як вищезазначене рішення.
Посилання: http://bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html
http_proxy
необхідні для HTTP-URL-адрес і https_proxy
потрібні для HTTPS-URL-адрес. Крім того, можна просто встановити all_proxy
всі URL-адреси. Дивіться ENVIRONMENT
розділ у завитку (1) . Однак, встановлюючи параметри git-config, http.proxy
використовується як для HTTP, так і для HTTPS. Дивіться http.proxy
у git-config (1) .
Якщо спосіб налаштування вашого проксі-сервера в командному рядку не працює, ви, ймовірно, можете просто відредагувати .gitconfig (у корені вашого профілю, який може ховатися як у C: \ Документах та налаштуваннях, так і на деякому мережевому диску) та додати це :
[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>
Наведений вище метод не працюватиме для ssh URL-адрес (тобто 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 на роботі (state / gov), тому я зробив свої дослідження і виявив це тут, і це працювало на мене. Сподіваюся, це допомагає :)
Змінна середовище http_proxy
Якщо ви використовуєте проксі-сервер або брандмауер, можливо, вам доведеться встановити змінну середовища http_proxy, щоб отримати доступ до деякого URL-адреси з командного рядка. Приклад: Установка ppm для perl або застосування rpm в linux, оновлення ubuntu
Встановіть змінну http_proxy з ім'ям хосту або IP-адресою проксі-сервера: http_proxy = http: // [proxy.example.org]
Якщо проксі-сервер вимагає імені користувача та пароля, включіть їх у такій формі: http_proxy = http: // [ім'я користувача: password@proxy.example.org]
Якщо проксі-сервер використовує порт, відмінний від 80, включіть номер порту: http_proxy = http: // [ім'я користувача: password@proxy.example.org: 8080]
Windows XP
- Відкрийте панель керування та натисніть значок системи.
- На вкладці Додатково натисніть на Змінні середовища.
- Натисніть кнопку Створити на панелі системних змінних.
- Додайте http_proxy з відповідною інформацією про проксі (див. Приклади вище).
Linux, Solaris або HP-UX
Встановіть змінну середовища http_proxy за допомогою команди, специфічної для вашої оболонки (наприклад, встановити або експортувати). Щоб зробити цю зміну стійкою, додайте команду у відповідний файл профілю для оболонки. Наприклад, у bash додайте такий файл, як наступний, у свій .bash_profile або .bashrc файл:
- http_proxy = http: // [ім'я користувача: пароль @ ім'я хоста: порт];
- експортувати $ http_proxy
На додачу до цих відповідей, я вважаю корисним врахувати ці два пункти:
Можливо, потрібно застосувати схему аутентифікації:
[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 не надсилав автентифікацію, поки я не встановив цей параметр config.
Якщо у вас встановлені та налаштовані 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
Встановлення 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
//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 repo.
Для користувачів Windows: якщо git config
або set http_proxy=
не працює, то ця відповідь може допомогти:
замініть git://
протокол сховища git на http://
. Зауважте, вам доведеться все-таки встановити http_proxy
перше.
Після невтомного випробування кожного рішення на цій сторінці, моя робота полягала в тому, щоб використовувати і SSH ключ замість цього!