development

HTTP 프록시를 통해 Git 저장소에서 어떻게 가져 옵니까?

big-blog 2020. 2. 14. 23:43
반응형

HTTP 프록시를 통해 Git 저장소에서 어떻게 가져 옵니까?


참고 : 설명 된 유스 케이스는 프로젝트 내에서 서브 모듈을 사용하는 것에 관한 것이지만 git cloneHTTP를 통한 일반적인 저장소의 경우 에도 마찬가지 입니다.

힘내 통제하에 프로젝트가 있습니다. 하위 모듈을 추가하고 싶습니다.

git submodule add http://github.com/jscruggs/metric_fu.git vendor/plugins/metric_fu

그러나 나는 얻는다

...
got 1b0313f016d98e556396c91d08127c59722762d0
got 4c42d44a9221209293e5f3eb7e662a1571b09421
got b0d6414e3ca5c2fb4b95b7712c7edbf7d2becac7
error: Unable to find abc07fcf79aebed56497e3894c6c3c06046f913a under http://github.com/jscruggs/metri...
Cannot obtain needed commit abc07fcf79aebed56497e3894c6c3c06046f913a
while processing commit ee576543b3a0820cc966cc10cc41e6ffb3415658.
fatal: Fetch failed.
Clone of 'http://github.com/jscruggs/metric_fu.git' into submodule path 'vendor/plugins/metric_fu'

HTTP_PROXY를 설정했습니다.

c:\project> echo %HTTP_PROXY%
http://proxy.mycompany:80

http 프록시에 대한 전역 Git 설정도 있습니다.

c:\project> git config --get http.proxy
http://proxy.mycompany:80

프록시를 통해 일관되게 작업하기 위해 HTTP 패치를받은 사람이 있습니까? 정말 이상한 점은 GitHub의 일부 프로젝트가 제대로 작동 awesome_nested_set하지만 ( : 레일) 다른 프로젝트는 계속 실패 한다는 것 입니다.


Git이 전역 구성 속성에서 사용하는 HTTP 프록시를 설정할 수도 있습니다 http.proxy.

git config --global http.proxy http://proxy.mycompany:80

프록시로 인증하려면

git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080/

( 인증 형식 은 Credit이 @EugeneKulabuhov@JaimeReynoso 로 이동 합니다.)


이미 이것에 대한 좋은 답변이 있습니다. 그러나 일부 프록시 서버에서는 사용자 ID와 비밀번호로 인증해야하므로 칩인이 필요하다고 생각했습니다. 때때로 이것은 도메인에있을 수 있습니다.

예를 들어 프록시 서버 구성이 다음과 같은 경우

Server: myproxyserver
Port: 8080
Username: mydomain\myusername
Password: mypassword

그런 .gitconfig다음 다음 명령을 사용 하여 파일에 추가하십시오 .

git config --global http.proxy http://mydomain\\myusername:mypassword@myproxyserver:8080

걱정하지 마십시오 https. 지정된 프록시 서버가 http 및 https를 지원하는 한 구성 파일의 한 항목으로 충분합니다.

그런 다음 다음을 수행하여 명령이 .gitconfig파일에 항목을 추가했는지 확인할 수 있습니다 cat .gitconfig.

파일의 끝에 다음과 같은 항목이 표시됩니다.

[http]
    proxy = http://mydomain\\myusername:mypassword@myproxyserver:8080

그게 다야!


마지막으로 효과가 있었던 것은 http_proxy환경 변수를 설정하는 것이 었습니다 . 나는 HTTP_PROXY올바르게 설정 했지만 git은 분명히 소문자 버전을 더 좋아합니다.


Windows에서 Git의 mingw 컴파일을 사용하고있는 것 같습니다 (또는 내가 듣지 못한 다른 것). 이것을 디버깅하는 방법이 있습니다 : git에 대한 모든 http 프록시 작업은 curl에 의해 수행된다고 생각합니다. git을 실행하기 전에이 환경 변수를 설정하십시오 :

GIT_CURL_VERBOSE=1

이것은 적어도 당신에게 무대 뒤에서 무슨 일이 일어나고 있는지에 대한 아이디어를 제공해야합니다.


지정된 리포지토리에서 프록시를 사용하려면 다른 리포지토리가 필요하지 않습니다. 바람직한 방법은 리포지토리 -c, --config <key=value>옵션 git clone입니다. 예 :

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git --config "http.proxy=proxyHost:proxyPort"

네트워크 팀이 인증서를 다시 작성하여 SSL 검사를 수행 한 경우 https URL 대신 http URL을 사용 하고이 var 설정을 사용하면 나에게 도움이되었습니다.

git config --global http.proxy http://proxy:8081

당신도 할 수 편집 .gitconfig 파일은 Windows 시스템에서 % USERPROFILE % 디렉터리에 위치 ( 메모장 % USERPROFILE % .gitconfig ) 또는 리눅스 시스템 (에 ~ 디렉토리에있는 VI ~ / .gitconfig )와 HTTP에 섹션을 추가 아래로.

.gitconfig 파일의 내용 :

[http]
        proxy = http://proxy.mycompany:80

이것은 오래된 질문이지만 Windows를 사용하는 경우 https URL을 통해 검색하는 경우 HTTPS_PROXY 설정을 고려하십시오. 나를 위해 일했다!


나를 위해 git : //는 프록시를 통해 작동하지 않지만 https : //는 작동합니다. 모두 git : //를 사용하는 스크립트를 실행했기 때문에 약간의 두통이 발생했기 때문에 모든 것을 쉽게 변경할 수 없었습니다. 그러나 나는이 GEM을 발견했다.

git config --global url."https://github.com/".insteadOf git://github.com/

인증 된 http 프록시를 찾지 http.proxyGIT_PROXY_COMMAND작동 하지 않습니다 . 프록시는 어느 쪽이든 트리거되지 않습니다. 그러나이 문제를 해결할 수있는 방법을 찾으십시오.

  1. corkscrew 또는 원하는 다른 대안을 설치하십시오 .
  2. 인증 파일을 작성하십시오. 형식 authfile은 : user_name:passworduser_name이며 password프록시에 액세스하기위한 사용자 이름 및 비밀번호입니다. 이러한 파일을 작성하려면 다음과 같이 명령을 실행하십시오 echo "username:password" > ~/.ssh/authfile.

  3. 편집 ~/.ssh/config하고 권한이 644다음 과 같은지 확인하십시오 .chmod 644 ~/.ssh/config

github.com을 예로 들어 다음 행을 추가하십시오 ~/.ssh/config.

Host    github.com
        HostName        github.com
        ProxyCommand    /usr/local/bin/corkscrew <your.proxy> <proxy port> %h %p <path/to/authfile>
        User            git

이제로 작업을 수행 할 때마다 git@github.com프록시가 자동으로 사용됩니다. Bitbucket 에서도 동일한 작업을 쉽게 수행 할 수 있습니다 .

이것은 다른 접근 방식만큼 우아하지는 않지만 매력처럼 작동합니다.


Windows에서 비밀번호를 일반 텍스트로 .gitconfig에 넣지 않으려면 다음을 사용할 수 있습니다.

일반 또는 Windows NTLM 프록시에 대해 사용자를 인증하고 인증없이 localhost-proxy를 시작합니다.

그것을 실행하려면 :

  • Cntml 설치
  • 프록시 인증을 통과하도록 설명서에 따라 Cntml 구성
  • 자식을 새 로컬 호스트 프록시로 지정하십시오.

    [http]
        proxy = http://localhost:3128       # change port as necessary
    

나를 위해 일한 것은 다음과 같습니다.

sudo apt-get install socat

다음을 사용하여 $ BIN_PATH / gitproxy 내에 파일을 작성하십시오.

#!/bin/sh 
_proxy=192.168.192.1 
_proxyport=3128 
exec socat STDIO PROXY:$_proxy:$1:$2,proxyport=$_proxyport

실행 권한을 부여하는 것을 잊지 마십시오

chmod a+x gitproxy

다음 명령을 실행하여 환경을 설정하십시오.

export PATH=$BIN_PATH:$PATH
git config --global core.gitproxy gitproxy

git에 프록시 설정

명령

git config --global http.proxy http://user:password@domain:port

git config --global http.proxy http://clairton:123456@proxy.clairtonluz.com.br:8080

Google에서 첫 번째 결과로 이것을 게시하기 위해이 블로그 게시물은 curl 인증서를 업데이트하여 문제를 해결합니다.

http://www.simplicidade.org/notes/archives/2011/06/github_ssl_ca_errors.html


이것은 나에게 효과가 있었다.

git config --global http.proxy proxy_user:proxy_passwd@proxy_ip:proxy_port

약간 다른 수정 사항으로 동일한 문제가 발생했습니다 .HTTP 지원으로 GBU 재 구축

git:프로토콜은 내 회사 방화벽을 통해 작동하지 않았다.

예를 들어 시간이 초과되었습니다.

git clone git://github.com/miksago/node-websocket-server.git

curl github.com그래도 잘 작동하므로 내 http_proxy환경 변수가 올바른지 알고 있습니다.

http아래와 같이을 사용해 보았지만 즉시 오류가 발생했습니다.

git clone http://github.com/miksago/node-websocket-server.git

->>>  fatal: Unable to find remote helper for 'http' <<<-

git을 다시 컴파일하려고 시도했습니다.

./configure  --with-curl --with-expat

그러나 여전히 치명적인 오류가 발생했습니다.

마지막으로 몇 시간 동안 실망한 후 구성 파일을 읽고 이것을 보았습니다.

# curl 헤더와 라이브러리 파일이 있으면 CURLDIR = / foo / bar를 정의하십시오.

# / foo / bar / include 및 / foo / bar / lib 디렉토리

그때 나는 curl소스를 준수하지 않았기 때문에 헤더 파일을 찾았습니다. 물론 설치되지 않았습니다. 그게 문제였습니다. 누락 된 헤더 파일에 대해 Make가 불평하지 않았습니다. 그래서 나는 --with-curl옵션이 아무것도 하지 않았다는 것을 몰랐다 (사실 내 버전의 기본값 임 git).

나는 그것을 고치기 위해 다음을했다.

  1. make에 필요한 헤더를 추가했습니다.

    yum install curl-devel
    (expat-devel-1.95.8-8.3.el5_5.3.i386  was already installed).
    
  2. 새 설치를 유지하기 위해 제거 git했습니다 /usr/local.

    나는 단순히 제거 git*에서 /usr/local/share/usr/local/libexec

  3. curlexpat헤더 파일을 포함하는 포함 디렉토리를 검색 한 후 (내가 읽었 기 때문에 configure) 다음과 같이 환경에 추가했습니다.

    export CURLDIR=/usr/include 
    export EXPATDIR=/usr/include
    
  4. configure, 다시에 설명 된 다음 옵션과 configure도 기본값하지만 도대체 파일 자체, 그리고했다 :

    ./configure  --with-curl --with-expat
    
  5. 이제 회사 방화벽 httpgit통해 작동합니다 .

    git clone http://github.com/miksago/node-websocket-server.git
    Cloning into 'node-websocket-server'...
    * Couldn't find host github.com in the .netrc file, using defaults
    * About to connect() to proxy proxy.entp.attws.com port 8080
    *   Trying 135.214.40.30... * connected
    ...
    

Git credential.helper를 wincred로 설정하십시오.

git config --global credential.helper wincred

자격 증명이 하나만 있는지 확인하십시오.

git config -l

1 이상이 있고 wincred로 설정되지 않은 경우 제거하십시오.

git config --system --unset credential.helper

이제 비밀번호없이 프록시를 설정하십시오.

git config --global http.proxy http://<YOUR WIN LOGIN NAME>@proxy:80

추가 한 모든 설정이 제대로 표시되는지 확인하십시오 ....

git config --global -l

이제 잘 가세요!


당신이 사용할 수있는:

git config --add http.proxy http://user:password@proxy_host:proxy_port

프록시 체인 사용

proxychains git pull ...

업데이트 : proxychains가 중단되었습니다 . 대신 proxychains-ng를 사용하십시오.


프록시에는 문제가 없습니다. github (또는 git)에 문제가 있습니다. Linux의 git-1.6.0.1에서도 실패합니다. 버그 는 이미보고되어 있습니다.

Pasties는 이미 Google에 있습니다. 편집 : 꿈을 꾸었어야합니다. 삭제 할 수없는 것 같습니다. 사용 요점 대신?


$ http_proxy는 http://github.com을 위한 것입니다 .... $ https_proxy는 https://github.com을 위한 것입니다 ...


Windows의 경우

이동-> C : / Users / user_name / gitconfig

아래 세부 사항으로 gitconfig 파일 업데이트

[http]

[https]

proxy = https://your_proxy:your_port

[http]

proxy = http://your_proxy:your_port

프록시 및 포트 번호를 확인하는 방법은 무엇입니까?

Internet Explorer-> 설정-> 인터넷 옵션-> 연결-> LAN 설정


https를 사용하여 프록시를 둘러 보았습니다 ... 일부 프록시는 https를 확인조차하지 않습니다.

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

c:\git\meantest>git clone http://github.com/linnovate/mean.git
Cloning into 'mean'...
fatal: unable to access 'http://github.com/linnovate/mean.git/': Failed connect
to github.com:80; No error

c:\git\meantest>git clone https://github.com/linnovate/mean.git
Cloning into 'mean'...
remote: Reusing existing pack: 2587, done.
remote: Counting objects: 27, done.
remote: Compressing objects: 100% (24/24), done.
rRemote: Total 2614 (delta 3), reused 4 (delta 0)eceiving objects:  98% (2562/26

Receiving objects: 100% (2614/2614), 1.76 MiB | 305.00 KiB/s, done.
Resolving deltas: 100% (1166/1166), done.
Checking connectivity... done

위의 답변은 프록시가 인증이 필요하지 않을 때 효과적이었습니다. 인증이 필요한 프록시를 사용하는 경우 CCProxy를 시도 할 수 있습니다. 여기에 설정하는 방법에 대한 작은 자습서가 있습니다.

http://blog.praveenkumar.co.in/2012/09/proxy-free-windows-xp78-and-mobiles.html

나는 새로운 저장소를 밀고 당기고 만들 수 있었다. 모든 것이 잘 작동했습니다. 내가했던 것처럼 Git에 문제가 발생하면 완전히 제거하고 새 버전을 다시 설치하십시오.


이것은 많은 사람들에 의해 답변되었지만 이것은 auth로 프록시 뒤에있는 Winodws 사용자를 위한 것 입니다.

다시 설치 (먼저 실패했습니다. 제거하지 마십시오).

Goto ->
**Windows**
1. msysgit\installer-tmp\etc\gitconfig
    Under [http]
        proxy = http://user:pass@url:port

**Linux**
1. msysgit\installer-tmp\setup-msysgit.sh
      export HTTP_PROXY="http://USER:PASS@proxy.abc.com:8080"

사용자 / 패스에 특수 문자가 있으면 url_encode를 사용 하십시오.


@ user2188765가 이미 지적했듯이 git://리포지토리 프로토콜을로 바꾸십시오 http[s]://. 이 답변 참조

참고 URL : https://stackoverflow.com/questions/128035/how-do-i-pull-from-a-git-repository-through-an-http-proxy



반응형