Git이 프록시 서버와 작동하도록하기- "요청 시간이 초과되었습니다"와 함께 실패


918

Git에서 프록시 서버를 사용하려면 어떻게해야합니까?

Git 서버에서 코드를 체크 아웃해야하지만 매번 "Request timed out"이 표시됩니다. 이 문제를 어떻게 해결합니까?

또는 프록시 서버를 어떻게 설정할 수 있습니까?


이것이 자식 클라이언트 구성 항목이 아닌가? 이것의 유일한 측면은 cmd.exe와 관련이있는 것 같습니다 .git 클라이언트가 환경 변수에 프록시를 지정할 수 있다는 것입니다.
Michael Burr

이 문제는 git 고유이므로 모든 Windows 참조를 제거하기 위해 원래 질문을 편집했습니다.
PlagueHammer



3
이 질문에 대한 대부분의 답변은 HTTP 프록시에 관한 것입니다. 당신이 SOCKS 프록시가있는 경우, 볼 이 질문 은 HTTP / S를위한 프로토콜이 하나 : // 프로토콜 자식에 대한합니다.
사용자

답변:


1634

사용할 명령 :

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

15
감사합니다 살림. 내 URL에서 proxyuser : proxypwd없이 작동했습니다.
Kwex

11
고마워요 나에게 그것은 NTLM 기반 인증이었고 내 .gitconfig 업데이트가 작동하지 않았습니다. (. NTNT 인증을 사용하는 CNTLM을 가져와야했습니다 .CNTLM을 네트워크의 프록시 서버로 가리킨 다음 소프트웨어를 가리 키기 만하면됩니다. 업데이트 관리자 (냠 같은 apt-get을 또는 ssh) 로컬 프록시에 복제 같은 자식 작업의 경우, http.proxy을 끌어했다 로컬 서버 내 로컬로 구성된 프록시..
Mayur Nagekar

9
안녕하세요, "@"문자가 있으면 어떻게 proxypass를 설정할 수 있습니까? 나는이 캐릭터를
탈출

13
@patricK 직접 테스트하지는 않았지만 in username / password 문자열 %40의 대체물로 사용할 수 있습니다 @. 도움이 되길 바랍니다. :-)
Sourav Ghosh 2016 년

14
@patricK % 40을 @ 대신 사용할 수 있음을 확인할 수 있습니다. 특수 문자가 작동하지 않으면 URL 인코딩을 시도해야합니다. 인코딩은 여기에서 찾을 수 있습니다 : w3schools.com/tags/ref_urlencode.asp
Jon

133

이것은 회사 방화벽 뒤의 Windows XP에서 저에게 효과적이었습니다.

http://code.google.com/p/msysgit/downloads/list?can=3 에서 git v1.771 이외의 로컬 프록시 또는 다른 소프트웨어를 설치할 필요가 없었습니다 .

$ 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 = IT 부서에서 할당 한 프록시 사용자입니다. 필자의 경우 PC에 로그인 할 때 사용하는 Windows 사용자 인 Active Directory 사용자와 같습니다.

proxypwd = 프록시 사용자의 비밀번호

proxy.server.com:8080 = 프록시 이름 및 포트, 프록시 서버 섹션의 제어판, 인터넷 옵션, 연결, Lan 설정 버튼, 고급 버튼에서 가져 왔습니다. 첫 번째 (http) 행의 서버 이름 및 포트를 사용하십시오. .

mygithubuser = github.com 에 로그인 할 때 사용하는 사용자

mygithubpwd = 내 github.com 사용자의 비밀번호

repoUser = 리포지토리 의 사용자 소유자

repoName = 리포지토리 이름


2
만세, 고마워! simplicidade.org/notes/archives/2011/06/…에git config --global http.sslcainfo MY_NEW_CERTS_BUNDLE.crt 설명 된대로 다운로드 한 인증서 (스택 덕분에 stackoverflow.com/a/7206627/98528 )가 나를 위해 해냈습니다!
akavel

3
나를 위해 작동하는 것 같지만 git://프로토콜을 사용하여 리포지토리를 복제하도록 요청하면 여전히 자식이 작동하지 않습니다 .
Ajedi32

3
나를 위해 일한 것에 기초하여 pablolic의 정보에 대한 몇 가지 설명 : 1) proxyuser가 Windows 로그인 인 경우 AD 도메인을 제외하고 도메인없이 사용자 이름을 포함하십시오. 2) proxypwd의 공백은 "+"로 인코딩되어야합니다. 예를 들어 "My Password"는 "My + Password"로 입력해야합니다.
Simon Tewsi

2
@ EdmundYeung99 : @ 기호를 % 40으로 바꾸는 것이 좋습니다. 시도하지는 않았지만 표준 URL 인코딩이라고 생각합니다.
Simon Tewsi

2
@ demongolem : 암호를 URL로 인코딩해야한다고 생각합니다 (시도하지 않았지만 이것은 단지 교육받은 추측 일뿐입니다). 다음 답변의 표에서 UrlEncoded 열을 참조하십시오. stackoverflow.com/a/11236038/216440 이 경우 $를 % 24로 바꾸어야합니다.
Simon Tewsi 2016

52

http_proxy값으로 이름이 지정된 시스템 변수를 설정하십시오 ProxyServer:Port. 이것이 가장 간단한 해결책입니다. 각각 https_proxy의 의견에 언급 된 대 푸로 사용 하십시오.

sskeke가 언급 한 것처럼 gitproxy를 설정하는 것도 또 다른 옵션이지만, 위의 솔루션만큼 간단하지 않은 "명령"이 필요합니다.

참고 문헌 : http://bardofschool.blogspot.com/2008/11/use-git-behind-proxy.html


10
https-repository에 연결하는 경우 'https_proxy'를 사용하십시오.
daefu

1
@daefu : https_proxy를 설정해야하는지 확실하지 않습니다. https 저장소에 연결되어 있으며 pablolic의 첫 번째 단계 (예 : git config 파일에 http.proxy 추가)를 수행했습니다. 그것이 나를 위해 필요한 전부였습니다.
Simon Tewsi

3
나를 위해 https_proxy가 필요했습니다. 단지 HTTP_PROXY는 복제를 허용하지 않았다 설정을 HTTPS를 REPO
explunit

@daefu +1 이것은 또한 미망인과 함께 작동합니다 github-관련 질문 : stackoverflow.com/questions/16216176/…
blue-sky

4
@SimonTewsi @explunit 환경 변수를 설정하는 동안 http_proxyHTTP URL https_proxy에 필요하고 HTTPS URL에 필요합니다. 또는 all_proxy모든 URL에 대해 설정할 수 있습니다 . curl (1)의ENVIRONMENT 섹션을 참조하십시오 . 그러나 git-config 옵션을 설정하는 동안 HTTP 및 HTTPS URL 모두에 사용됩니다. 보기 에 자식 - 설정 (1) . http.proxyhttp.proxy
Susam Pal

43

프록시 서버를 구성하는 명령 행 방법이 작동하지 않는 경우 .gitconfig (프로필의 루트에서 C : \ Documents and Settings 및 일부 네트워크 드라이브에서 숨길 수 있음)를 편집하고 추가하면됩니다. :

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

그러나 YMMV는 명령 행 구성의 첫 번째 단계에만 적용됩니다. 시스템 git 구성도 편집해야 할 수도 있으며 어디에서 숨겼는지 모르겠습니다.


1
"시스템 git 구성도 편집해야 할 수도 있습니다." 아니요, 보통은 아닙니다. 시스템 및 사용자 구성이 결합됩니다. 둘 중 하나에 프록시를 설정하면 충분합니다.
sleske

필자의 경우 Windows 시스템의 [git home] \ etc \ gitconfig에 있습니다. 편집 후에는 매력처럼 작동합니다!
Barmaley Red Star

특수 문자로 인해 명령 행이 비밀번호를 좋아하지 않는 경우에 특히 유용합니다.
Origin

37

를 사용하는 대신 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"'

22

우분투를 사용하는 경우 다음을 수행하십시오 ...

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

"$@"대신을 사용해야 합니다 $*. 자세한 내용은 쉘 설명서를 참조하십시오.
Hynek -Pichi- Vychodil

15

.gitconfigWindows 의 여러 파일로 인해 동일한 문제가 발생 하여 아래 단계를 따라 동일한 문제를 해결했습니다.

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

12

~ / .gitconfig 파일에 다음을 입력하십시오.

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

1
위의 모든 것을 시도했습니다. 내가 여기에 나열된 https 항목을 추가 할 때까지는 일할 수 없었습니다.
브렌트 피셔

11

git 프로토콜 (git : // ...)의 경우 socat을 설치하고 다음과 같은 스크립트를 작성하십시오.

#!/bin/sh

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

실행 가능하게 만들고 경로와 스크립트 이름으로 ~/.gitconfig설정 하십시오 core.gitproxy.


cygwin의 SOCAT이있는 창에서도 작동합니다. 사용socat STDIO PROXY:%proxy%:%1:%2,proxyport=%PROXYPORT%
davenpcj

1
set GIT_PROXY_COMMAND=path\to\scriptgit config를 망칠 ​​필요없이 GIT가 프록시를 사용 하도록 할 수 있습니다 .
davenpcj

예! 마지막으로 올바른 힌트! 또한 인증이 필요했습니다 : exec socat STDIO PROXY : <proxy> : $ 1 : $ 2, proxyport = <port>, proxyauth = <user> : <passwd> 여기에서 발견 : gist.github.com/sit/49288
Joachim

11

내가 알아 차리고 여기에 공유하고 싶은 것이 있습니다.

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

HTTPS 포트 ( https://help.github.com/en/articles/using-ssh-over-the-https-port )를 통해 SSH를 설정 하면 포트가 변경되기 때문에 변경되지 않습니다 (기본적으로 22 ) ssh 연결이 연결됩니다.

(영어 원어민이 아니므로 필요한 경우 내 말을 수정하십시오)


7

나는 직장 (주 / 정부)에서 Windows XP를 사용하므로 연구를하고 여기서 찾았 으며 나에게 도움이되었습니다. 도움이 되었기를 바랍니다 :)

http_proxy 환경 변수

프록시 서버 또는 방화벽을 사용하는 경우 명령 행에서 일부 URL에 액세스하기 위해 http_proxy 환경 변수를 설정해야 할 수 있습니다. 예 : Linux에서 perl에 ppm 설치 또는 rpm을 적용하여 우분투 업데이트

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]

윈도우 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 내보내기

tanx-> :) C : \ Users \ AT> echo % https_proxy % 172.20.4.55:808
qasem

7

이 답변 외에도 다음 두 가지 사항을 고려하는 것이 도움이되었습니다.

인증 체계를 시행해야 할 수도 있습니다.

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

또한 일반적으로 NTLM 인증 스키마를 사용하면 AD 도메인을 명시 적으로 제공해야 할 수 있습니다.

자식 배쉬에서 :

echo %userdomain%

그리고 http.proxy를 적절히 업데이트하십시오.

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

어쨌든 CURL 로그를 추가하면 조사가 도움이 될 수 있습니다.

export GIT_CURL_VERBOSE=1

를 사용하여 proxyAuthMethod를 추가해야했습니다 git config --global http.proxyAuthMethod basic. Git gersion 2.8.3은이 구성 매개 변수를 설정할 때까지 인증을 보내지 않았습니다.
HeatfanJohn

5

당신이있는 경우 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>

그건 그렇고, 프록시 체인은 오랫동안 업데이트되지 않습니다, 당신은 proxychians-ng를 시도하고 싶을 수도 있습니다


4

터미널에서 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

하나의 자식 루트에 대해서만 프록시를 제거하려는 경우

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

3

여기 프록시 설정입니다

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

3

나는 여기에 권장되는 대부분의 답변을 따랐습니다. 먼저 다음과 같은 오류가 발생했습니다.

치명적 : ' 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/ ' 에 액세스 할 수 없음 : CONNECT 후 프록시에서 HTTP 코드 407을 수신함

프록시 서버가 SSL 인증서를 확인할 수없는 경우 발생할 수 있습니다. 따라서 우리는 ssl 확인이 꺼져 있는지 확인하고 (신뢰할 수없는 사이트에는 권장되지 않음) @Arpit에서 권장하지만 약간 변경하여 다음 단계를 수행했습니다.

1. 먼저 이전 프록시 설정을 제거하십시오.

git config --global --unset http.proxy

그런 다음 gitconfig 내용을 나열하고 가져옵니다.

git config --list --show-origin

다음과 같이 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

3

프록시 비밀번호 인코딩 문제가 있었으므로 위의 모든 답변을 시도했지만 아무런 효과가 없었습니다.

이 명령은 효과가있었습니다.

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

명령에 비밀번호를 입력하지 마십시오. git repo에 연결하려고 할 때 동적으로 묻습니다.


고마워, 이것은 나를 위해 일했다. git config 설정은 http.proxy 여야하지만
ochhii

사용자 이름이 충분하지 않으며 비밀번호도 필요합니다.
Dinith

이 코드를 사용하십시오 {git config --global http.proxy proxyuser : proxypwd@proxy.server.com : 8080 }
Dinith

2

윈도우 사용자의 경우 : 경우 git config또는 set http_proxy=수행하지 작업 이 답변 이 도움 될 수 있습니다.

git://git 저장소 의 프로토콜을로 바꿉니다 http://. http_proxy어쨌든 첫 번째 를 설정해야합니다 .


0

이 페이지의 모든 솔루션을 지칠 줄 모르고 시도한 후 내 해결 방법은 SSH 키를 대신 사용하는 것입니다!

  1. 힘내 배쉬 열기
  2. $ ssh-keygen.exe -t rsa -C
  3. Git 공급자 (Github, Bitbucket 등)를 엽니 다.
  4. id_rsa.pub 파일 내용을 Git 제공 업체의 입력 페이지에 추가합니다 (프로필 확인).
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.