프록시 뒤의 GitHub Windows 클라이언트


93

Windows 용 GitHub 클라이언트를 작동 시키려고합니다. 회사 프록시 및 방화벽 뒤에있는 회사 Win 7 x64 컴퓨터에 있습니다. 다양한 다른 게시물에 따라 환경 변수 및 구성 변수의 여러 조합을 실험하면서 복제 및 푸시 업데이트를 작동하는 유일한 방법은 전체 회사 도메인 사용자 ID 및 암호를 포함하여 HTTPS_PROXY 환경 변수를 사용하는 것입니다.

이것은 보안 관점에서 받아 들일 수 없습니다. 이 작업을 수행하는 다른 방법이 있습니까?

추가 참고 사항 :

다음은 작동했습니다.

  • HTTPS_PROXY값으로 호출 된 환경 변수 추가http://[domain]\[userid]:[password]@someproxy.mycorp.com:8080

다음은 작동 하지 않았습니다 .

  • HTTPS_PROXY변수 에서 사용자 ID 및 비밀번호 생략
  • HTTP_PROXY(no S) 라는 환경 변수 사용
  • http.proxy전역 구성 파일 ( .gitconfig)에 변수 추가
  • https.proxy전역 구성 파일에 변수 추가

모든 경우에 GitHub 클라이언트는 여전히 프록시를 인식하지 못합니다. 파일 내용은 시작시 TheLog.txt 항상 다음을 표시합니다.

[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Proxy information: (None)
[time]|INFO|thread:4|GitHub.Helpers.StartupLogger|Couldn't fetch creds for proxy

그 다음에는 여러 번의 실패한 프록시 인증 시도의 출력이 표시되며 모두 "자격 증명이 없습니다"를 나타냅니다.


2
환경 변수를 추가하는 것은 나에게 트릭을 제공했지만 환경 변수에 대한 액세스 권한이있는 모든 애플리케이션에 내 도메인 / 암호를 노출하기 때문에 허용되지 않는 솔루션입니다.
Fabricio 2013 년

jacobbenson.com/?p=302#sthash.DzPYdGUU.dpbs 는 이것이 gui (윈도우 세트 프록시를 올바르게 사용함)가 git 명령에 대해 장면 뒤에서 msysgit을 호출하기 때문에 발생 한다고 설명합니다. msysgit은 Windows 프록시 설정을 사용하지 않는 http 요청에 libcurl을 사용합니다. github.com/libgit2/libgit2sharp의 libgit2sharp를 포함하여 여러 영역에서이 문제를 해결하기위한 작업이 진행 입니다.
Andrew Hill

답변:


131

다음 항목을 사용자 디렉터리의 '.gitconfig'파일에 추가합니다 (% USERPROFILE %로 이동).

[http]
    proxy = http://<proxy address>:<proxy port>

[https]
    proxy = https://<proxy address>:<proxy port>

암호를 일반 텍스트로 저장하지 않으려면 CNTLM과 같은 로컬 프록시 전달자를 사용하여 모든 트래픽을 전달하고 해시 된 암호를 저장할 수 있습니다.


원래 질문과 달리 암호가 일반 텍스트인지 상관하지 않으면 다음을 추가하십시오.

[http]
    proxy = http://<username>:<password>@<proxy address>:<proxy port>

[https]
    proxy = https://<username>:<password>@<proxy address>:<proxy port>

프록시에 대해 인증을 필요로하는 경우 edufinn 대답을 참조하십시오 프록시 = HTTP : // <사용자 이름> : <암호> @ <기업 프록시> : <포트>
월 병력

1
원래 질문은 특히 일반 텍스트로 암호를 저장하지 않고 그것을 수행하는 방법에 대해 질문했다 @JanHommes
Sogger

@Sogger 내 비밀번호에 "@"문자가 포함되어있는 경우 비밀번호를 어떻게 구성해야하나요? 도와 주셔서 감사합니다.
해안선


4
CNTLM을 127.0.0.1사용하는 localhost경우 제안 된대로 대신 프록시를 가리켜 야합니다 . Windows에서는 localhost가 먼저 CNTLM이 수신하지 않는 IPv6 주소를 가리키는 것으로 보입니다. 따라서 git은 IPv4 주소로 전환하기 전에 시간 초과 (몇 분)까지 기다립니다.
Ronan Paixão

14

위의 모든 것을 시도했지만 성공하지 못했습니다 . 나를 도운 유일한 것은 CNTLM- http: //cntlm.sourceforge.net/ 입니다.

설치하고 cntlm -H를 실행하고, corp 프록시에 인증하는 것보다 cntlm의 출력으로 cntlm.ini 파일을 편집하고 Windows 서비스를 다시 시작하십시오. .gitconfig를 다음으로 업데이트하십시오.

[https] proxy = localhost:3128
[http] proxy = localhost:3128

이제 cntlm이 모든 인증을 수행하고 corp 프록시 뒤에서 GitHub (및 Dropbox, btw)를 사용할 수 있습니다. 적어도 다음 암호 변경까지 :) (다시 cntlm -H 물건보다)


2
git clone, fetch 또는 pull과 같은 원격 작업을 완료하는 데 시간이 너무 오래 걸리는 경우 .gitconfig를 다음으로 전환 해보십시오. [https] proxy = 127.0.0.1:3128 [http] proxy = 127.0.0.1:3128
jhamm

어떤 Windows 서비스를 다시 시작 하시겠습니까?
Mukus

@Mukus cntlm-올바르게 기억하면 설치 후 서비스 모드에서 실행됩니다.
Anton

변경하고 다시 시작했지만 여전히 작동하지 않습니다.
Mukus

8

회사 프록시와 함께 작동하도록 GitHub Shell을 만들 수있었습니다. GitHub Shell을 시작하고 다음 명령을 실행합니다.

export http_proxy=http://<username>:<password>@<corporate proxy>:3128

GUI도 작동하도록 만들고 싶습니다. 하지만 회사 자격 증명 정보가 포함 된 Windows 전역 환경 변수를 설정하고 싶지 않습니다.

이상하게도 GitHub GUI 클라이언트는 사용자 인증을 위해 GitHub에 연결할 수 있지만 문제는 GitHub에서 프로젝트를 복제, 가져 오기 및 푸시하는 것입니다. 문제는 git 구현에있는 것 같습니다. 내 자격 증명을 git 전역 설정에 넣지 않고 프록시를 통해 실행되도록 git을 구성 할 수 있었고 pull 또는 push 요청을 수행하는 동안 자격 증명을 요청했습니다. 그러나 그것은 Git Shell에서만 작동했습니다.


아마도 GitHub는 OS에서 프록시 정보를 가져 오는 일부 구성 요소 (일부 SingleSignOn 솔루션)를 사용하여 내부적으로 인증하지만 git 자체는 그렇지 않기 때문입니다. SourceTree와 동일한 문제가 있습니다. 또한 git이 작동 할 때 작동하는 데 엄청나게 오랜 시간이 걸리므로 SourceTree 사용이 불가능하다는 것을 알았습니다.
Ronan Paixão 2015 년

Github가 일반적으로 필터링되는 git 포트를 IT 담당자가 볼 수있는 일반적인 포트가 아닌 것으로 사용하려고하기 때문일 수 있습니다. 대안에 대한 내 대답을 참조하십시오.
dragon788

7

기업에서 Windows 용 GitHub를 사용하는 경우, 회사 방화벽 / 프록시가 심각 할 가능성이 높습니다. Windows 용 GitHub에는 옵션 설정을위한 GUI에 아직 프록시 매개 변수가 없습니다.

회사 프록시를 사용하도록 Windows 용 GitHub를 구성하려면 일반적으로 C : \ Users \ .gitconfig 또는 C : \ Documents & Settings \ .gitconfig에있는 .gitconfig 파일을 편집합니다.

Windows 용 GitHub를 닫습니다. .gitconfig에서 다음을 추가하십시오.

[https] 프록시 = proxy.yourcompany.com:port


4

나는 또한이 문제에 부딪 쳤고 그것에 대해 조금 파고 들었다 (클라이언트 분해).

우리가보고있는 로그 메시지를 생성하는 코드는 다음과 같습니다.

private static void LogProxyServerConfiguration()
{
    WebProxy defaultProxy = WebProxy.GetDefaultProxy();
    string str = defaultProxy.Address != (Uri)null ? defaultProxy.Address.ToString() : "(None)";
    StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy information: {0}", str);
    try
    {
        if (defaultProxy.Credentials == null)
        {
            StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Couldn't fetch creds for proxy", new object[0]);
        }
        else
        {
            NetworkCredential credential = defaultProxy.Credentials.GetCredential(GitHubClient.GitHubDotComUri, "Basic");
            StartupLogger.log.Info((IFormatProvider)CultureInfo.InvariantCulture, "Proxy is authenticated: {0}", credential != null && !string.IsNullOrWhiteSpace(credential.UserName));
        }
    }
    catch (Exception ex)
    {
        StartupLogger.log.InfoException("Couldn't fetch creds for proxy", ex);
    }
}

따라서이 블록 은 IE 에서 설정된 프록시 정보 만 기록합니다 . 로그 메시지는 구성 파일이나 환경 변수에서 설정 한 내용과 관련이없는 것으로 보입니다.


3

방화벽에 대해 잘 모르지만 내 캠퍼스는 프록시를 사용합니다.

git gui를 사용합니까? 편집 : 방금 Windows 용 github 클라이언트를 사용하고 있음을 알았습니다.

나는 tortoisegit을 사용하고 있으며 프록시를 설정하는 것은 매우 쉽습니다. 아무 곳이나 마우스 오른쪽 버튼으로 클릭하고, tortoisegit> network, 프록시 서버를 활성화하고 서버 주소, 사용자 이름 및 비밀번호를 설정하십시오. 끝난

내가 기억하는 한 tortoisegit은 github와 함께 즉시 작동합니다.


2

다음은 github에서 프록시를 설정하는 방법입니다.

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

여기 우리 대학에는 사용자 이름과 암호가 없으므로 대학 IP가 172.16.10.10이고 포트가 8080이면

git config --global http.proxy http://172.16.10.10:8080
git config --global https.proxy http://172.16.10.10:8080

추신 - 일을 당신이 더 배울 것 같은 장소에 빠질 것 같은> 내가 설정 한 프록시에이 방법을 사용하는 것이 좋습니다
소스



1

우리에게 솔루션에는 두 가지가 포함되었습니다. 먼저 Sogger의 답변에 설명 된대로 .gitconfig파일에 항목을 추가해야합니다 %USERPROFILE%.

[http]
    proxy = http://<proxy address>:<proxy port>

[https]
    proxy = https://<proxy address>:<proxy port>

둘째, (그리고 이것은 우리에게 누락 된 부분이었습니다.) 인증되지 않은 프록시 트래픽을 허용하도록 프록시 서버에서 예외를 구성해야 합니다.*.github.com

iPrism에서는 다음과 같이 보입니다. 여기에 이미지 설명 입력

문제는 프록시가 아니라 인증 입니다. 인증 요구 사항을 우회하면 필요한 통신이 GitHub 데스크톱 클라이언트를 사용하여 프로젝트를 복제하고 작업 할 수 있습니다.

또한이 접근 방식 에서는 파일에 프록시 자격 증명저장할 필요가 없습니다.gitconfig .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.